问题遇到的现象和发生背景
环境:python3.10+django3.2.13
问题描述:
http://localhost:8001/login/
本地登录页正常,登录后跳转到index.html出错。
问题相关代码,请勿粘贴截图
1、index.html引用的base.html相关部分:(index.html代码已经在下面的回复中做了补充)
<div class="panel-body">
{% archives as date_list %}
<ul>
{% for date in date_list %}
<li>
<a href="{% url 'blog:archives' date.year date.month %}">
{{ date.year }} 年 {{ date.month }}月</a>
</li>
{% empty %}
暂无归档!
{% endfor %}
</ul>
</div>
2、views.py中的
def archives(request, year, month):
blog_list = models.Blog.objects.filter(created_time__year=year, created_time__month=month).order_by('-created_time')
return render(request, 'blog/index.html', context={'blog_list':blog_list})
3、blog\url.py中的patterns设置:
from django.urls import path,re_path
from . import views
app_name = 'blog'
urlpatterns = [
path('',views.indexview.as_view(),name='index'),
path('myindex/<int:loguserid>/',views.myindex.as_view(),name='myindex'),
path('authorindex/<int:id>/',views.authorindex.as_view(),name='authorindex'),
re_path('blog/(?P<pk>[0-9]+)/',views.blogdetailview.as_view(),name='detail'),
re_path('archives/(?P<year>[0-9]{4})/(?P<month>[0-9]{1,2})/', views.archives, name='archives'),
re_path('category/(?P<pk>[0-9]+)/', views.categoryview.as_view(), name='category'),
re_path('tag/(?P<pk>[0-9]+)/', views.tagview.as_view(), name='tag'),
path('search/', views.search, name='search'),
path('login/', views.login,name='login'),
path('registe/', views.registe,name='registe'),
path('logout/',views.logout,name='logout'),
path('test_ckeditor_front/',views.test_ckeditor_front),
]
运行结果及报错内容
NoReverseMatch at /
Reverse for 'archives' with arguments '('', '')' not found. 1 pattern(s) tried: ['archives/(?P[0-9]{4})/(?P[0-9]{1,2})/']
Request Method: GET
Request URL: http://localhost:8001/
Django Version: 3.2.13
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'archives' with arguments '('', '')' not found. 1 pattern(s) tried: ['archives/(?P[0-9]{4})/(?P[0-9]{1,2})/']
Exception Location: D:\mysite\gtu\lib\site-packages\django\urls\resolvers.py, line 698, in _reverse_with_prefix
Python Executable: D:\mysite\gtu\Scripts\python.exe
Python Version: 3.10.4
Python Path:
['D:\mysite\gtu_blog',
'D:\Program Files\Python310\python310.zip',
'D:\Program Files\Python310\DLLs',
'D:\Program Files\Python310\lib',
'D:\Program Files\Python310',
'D:\mysite\gtu',
'D:\mysite\gtu\lib\site-packages']
Server time: Wed, 27 Apr 2022 21:44:37 +0800
Error during template rendering
In template D:\mysite\gtu_blog\templates\base.html, error at line 140
Reverse for 'archives' with arguments '('', '')' not found. 1 pattern(s) tried: ['archives/(?P[0-9]{4})/(?P[0-9]{1,2})/']
130 </div>
131 </div>
132 </div>
133 <div class="panel panel-default">
134 <div class="panel-heading">归档</div>
135 <div class="panel-body">
136 {% archives as date_list %}
137 <ul>
138 {% for date in date_list %}
139 <li>
140 <a href="{% url 'blog:archives' date.year date.month %}">
141 {{ date.year }} 年 {{ date.month }}月</a>
142 </li>
143 {% empty %}
144 暂无归档!
145 {% endfor %}
146 </ul>
147 </div>
148 </div>
149
150 {% endblock toc %}
Traceback Switch to copy-and-paste view
D:\mysite\gtu\lib\site-packages\django\core\handlers\exception.py, line 47, in inner
response = get_response(request) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\core\handlers\base.py, line 204, in _get_response
response = response.render() …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\response.py, line 105, in render
self.content = self.rendered_content …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\response.py, line 83, in rendered_content
return template.render(context, self._request) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\backends\django.py, line 61, in render
return self.template.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 170, in render
return self._render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 162, in _render
return self.nodelist.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 938, in render
bit = node.render_annotated(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 905, in render_annotated
return self.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\loader_tags.py, line 150, in render
return compiled_parent._render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 162, in _render
return self.nodelist.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 938, in render
bit = node.render_annotated(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 905, in render_annotated
return self.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\loader_tags.py, line 62, in render
result = block.nodelist.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 938, in render
bit = node.render_annotated(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 905, in render_annotated
return self.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\defaulttags.py, line 214, in render
nodelist.append(node.render_annotated(context)) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\base.py, line 905, in render_annotated
return self.render(context) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\template\defaulttags.py, line 449, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\urls\base.py, line 86, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) …
▶ Local vars
D:\mysite\gtu\lib\site-packages\django\urls\resolvers.py, line 698, in _reverse_with_prefix
raise NoReverseMatch(msg) …
▶ Local vars
我的解答思路和尝试过的方法
1、检查index.html及base.html;
2、检查archives函数;
3、检查urls.py设置;
我想要达到的结果
正常出现博客首页。