python - URL中的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")
]
view.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>
解决方案
基于https://docs.djangoproject.com/en/dev/ref/urls/#django.urls.path ,根据 zvadym 的先前评论,您需要使用re_path()
而不是path()
,因为它按字面意思解释。^$
这是 Django 2.0 中的新功能,因此取决于您的版本。
推荐阅读
- r - rename_with 但谓词基于其他变量中的值
- xml - 在 RML(RDF 映射语言)中加入多个 (2+) 节点/多跳映射
- macos - Flutter 无法运行,get_navigation & 主题错误
- windows - 外壳 | 在目录中按名称(Name.txt/Name(01).txt/Name(02).txt)查找类似文件,并删除除上次修改外的所有文件
- javascript - 为什么我在 componentDidMount 中的操作调用后 redux 状态未定义?
- python - 如何访问自定义对象列表中的字典值?
- jmeter - JMeter 报告显示一个请求的 3 个结果
- php - 无法在共享主机上通过 php 运行 bash 脚本
- powershell - 找不到“XmlMessageFormatter”的重载和参数计数:Powershell 中的 N 和 New-Object
- c - 在具有最新 XCode 的 MacOS Catalina 上,__DARWIN_C_LEVEL 对于 String.h 来说太低了……我该怎么办?