繁体   English   中英

Django URLCONF 和反向

[英]Django URLCONF and reverse

我试图了解 django 如何将主 urls.py 与另一个应用程序的 url 模式链接起来 - 在我的例子中,我有 2 个应用程序:登录页面和注册。 我在主 urls.py 中定义了这个:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('loginpage.urls')),
    path('signup/',include('signup.urls')),]

这在 loginpage.urls 中:

app_name='loginpage'
urlpatterns = [
    path('',views.login_page_fetch,name='login_page_fetch'),
    path('Verification/',views.check_user,name='check_user')
]

我在登录页面/视图中创建了一个 function 来获取模板并获取它:

def login_page_fetch(request):
    return render(request,'loginpage/login.html')

现在在我的注册/视图中,我创建了一个 function,它创建了一个用户等。它最终会将他重定向到登录页面:

def create_user(request):
    user=User()
    user.first_name=request.POST.get('firstname')
    user.last_name=request.POST.get('familyname')
    user.email_address=request.POST.get('email')
    user.password=request.POST.get('psw')
    user.save()
    return HttpResponseRedirect(reverse('loginpage:login_page_fetch'))   *//*

我无法理解从这里开始// django 如何找到 login_page_fetch 函数 - 他是否开始查看主 urls.py 文件以找到其映射到 loginpage.urls 的路径?

是的,Django URL 解析器:

  1. 从请求的根 URL 解析器开始(通常只是主urls模块,但可能不同),可能知道当前请求的 URL 命名空间以将无命名空间名称解析为当前命名空间
  2. 查看每个 URL 条目的名称空间和名称(“走进” include s 以查找更多条目)以查看它们是否与您要reverse的内容匹配
  3. 如果它通过命名空间找到匹配项,它会尝试将参数“适合”模板,如果可行,您将获得匹配项 URL。
  4. 如果所有选项都已用尽,则会引发错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM