【问题标题】:Django Url Pattern Not Being Found未找到 Django Url 模式
【发布时间】:2019-08-21 02:25:07
【问题描述】:

我按照教程允许用户注册帐户,但似乎找不到 url 路径。当我为其设置名称时,它允许我访问 127.0.0.1:8000/accounts/signup 但不能访问 127.0.0.1:8000/signup。

我尝试将 urlpatterns 从路径更改为 url 方法,但这并没有解决问题。

我的文件结构如下:

App:
   accounts:
           urls.py
           views.py
           ...
   Server:
         settings.py
         urls.py
         ...
   templates:
            registration:
                        login.html
            base.html
            home.html
            signup.html
   manage.py

在我的 Server\urls.py 我有

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('', TemplateView.as_view(template_name='home.html'), name='home'),
]

在我的帐户\urls.py 我有

from django.urls import path

from . import views


urlpatterns = [
    path('signup/', views.SignUp.as_view(), name='signup'),
]

我得到的错误是

Using the URLconf defined in Server.urls, Django tried these URL patterns, in this order:
   admin/
   accounts/
   accounts/
   [name='home']
The current path, signup, didn't match any of these.

我不太清楚发生了什么,因为我对 Django 还是很陌生,并且在学习过程中忙于学习。

【问题讨论】:

    标签: python django


    【解决方案1】:
    path('accounts/', include('accounts.urls')),
    

    表示来自accounts.urls 的所有url 都应该以accounts/ 为前缀。 如果这不是你想要的 - 编辑这个

    path('/', include('accounts.urls')),
    

    accounts.urls 将被视为顶级网址。

    【讨论】:

    • 那行得通。但我只想知道是否建议使用第一种方法或第二种方法?还是真的不重要?
    • 这取决于您的需求。第一个(带前缀)阅读起来更舒服,对url解析更具体。
    • 我想我会坚持第一种方法。我只是不太确定发生了什么,事实证明我还有很多东西要学。再次感谢:)
    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 2020-08-21
    • 2020-11-02
    • 2013-03-16
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多