Django URL中的意外字符

时间:2018-04-26 20:50:18

标签: python regex django url

我正在创建一个博客并尝试在帖子列表页面上进行分页操作。当我运行我的应用时,我的网址包含意外字符。例如;

http://127.0.0.1:8000/blog/%5E$

我无法理解为什么%5E$存在。

我的 urls.py (这是在blogapp中):

from django.urls import path,include
from django.contrib import admin

from . import views

urlpatterns = [
    path(r'^$',views.getPosts,name="bloghome"),
    path(r'^(?P<selected_page>\d+)/?$',views.getPosts,name="bloghome"),    
    path('<slug>',views.postDetailPage,name="post_detail")
]
views.py

中的

getPost函数

def getPosts(request,selected_page=1):
#    latest_post = Posts.objects.get(id=1)
    posts = Posts.objects.all().order_by('-pub_date')
    pages = Paginator(posts,5) #Show 5 post per page
    try:
        returned_page = pages.page(selected_page)
    except EmptyPage:
        returned_page = pages.page(pages.num_pages)
    #content = pages.page(selected_page)    
    return render(request,'blog.html',{'page':returned_page,
                                       'posts':returned_page.object_list
                                        })

最后,正在使用<a>标记在主页上输入此博客列表页面。这是一行代码:

<a href="{% url 'bloghome'%}">Blog</a> 

1 个答案:

答案 0 :(得分:0)

根据https://docs.djangoproject.com/en/dev/ref/urls/#django.urls.path,您需要使用re_path()代替path(),因为它根据zvadym的先前评论从字面上解释^$。这是Django 2.0中的新功能,因此它取决于您的版本。