强大的文本我在编写视图函数并创建模板并添加一些数据以使用它后创建了一个新的 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 %}
当我在url
that : 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_topics
和new_topic
URL 都匹配相同的路径。当 Django 解析传入请求路径时,它会按顺序循环你的 url 定义并返回第一个匹配项,因为board_topics
url 与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'),