定义视图函数并写入 URL 并添加一些数据后,我无法访问新的 URL



强大的文本我在编写视图函数并创建模板并添加一些数据以使用它后创建了一个新的 URL 路由,但我仍然无法访问我的 URL

views.py

def new_topic(request, pk):
board = get_object_or_404(Board, pk=pk)7
return render(request, 'new_topic.html', {'board': board})

urls.py

urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^boards/(?P<pk>d+)/$', views.board_topics, name='board_topics'),
url(r'^boards/(?P<pk>d+)/$', views.new_topic, name='new_topic'),
url(r'^admin/', admin.site.urls),
]

new_topic.html

{% extends 'base.html' %}
{% block title %}Start a New Topic{% endblock %}
{% block breadcrumb %}
<li class="breadcrumb-item"><a href="{% url 'home' %}">Boards</a></li>
<li class="breadcrumb-item"><a href="{% url 'board_topics' board.pk %}">{{ board.name }}</a></li>
<li class="breadcrumb-item active">New topic</li>
{% endblock %}
{% block content %}
{% endblock %}

当我在urlthat : 127.0.0.1:888/boards/3/new/写信时,我预料到了 我看到了我在模板中写的内容new_topic但它向我显示了此错误:

Page not found (404)
Request Method: GET
Request URL:    `http`://127.0.0.1:8000/boards/4/new
Using the `URLconf` defined in `myproject`.`urls`, `Django` tried these URL patterns, in this order:
^$ [name='home']
^boards/(?P<pk>d+)/$ [name='board_topics']
^boards/(?P<pk>d+)/$ [name='new_topic']
^admin/

当前路径 board/4/new 与其中任何一个都不匹配。

您的所有网址都与传入路径不匹配,您需要为此路径创建一个网址(和匹配的视图(

url(r'^boards/(?P<pk>d+)/new/$', views.new_board, name='board_new'),

board_topicsnew_topicURL 都匹配相同的路径。当 Django 解析传入请求路径时,它会按顺序循环你的 url 定义并返回第一个匹配项,因为board_topicsurl 与new_topic匹配相同的模式,new_topic永远不会匹配

url(r'^boards/(?P<pk>d+)/$', views.board_topics, name='board_topics'),
url(r'^boards/(?P<pk>d+)/$', views.new_topic, name='new_topic'),  # Same regex

您已尝试访问路径boards/(?P<pk>d+)/new/但没有任何 URL 模式与之匹配。应将new_topic的 URL 路径从url(r'^boards/(?P<pk>d+)/$', views.new_topic, name='new_topic'),更改为url(r'^boards/(?P<pk>d+)/new/$', views.new_topic, name='new_topic'),

最新更新