Django - 一个 URL 链接到两个视图?
Posted
技术标签:
【中文标题】Django - 一个 URL 链接到两个视图?【英文标题】:Django - One URL links to two views? 【发布时间】:2014-02-03 09:23:46 【问题描述】:对于我的主页,我希望能够拥有通用登录表单,因此我将主页 URL 链接到通用登录视图,如下所示:
from django.contrib.auth.views import login
urlpatterns = patterns('',
url(r'^$', login),
现在,我也想在主页上有注册表和视图。此视图称为 main_page 视图。在我的主页 URL 中使用这两个视图(以及这两个视图呈现的变量)的最佳方式是什么?
【问题讨论】:
【参考方案1】:如果你将 2 个 url 链接到单个视图,那么 Django 将只加载它首先遇到的视图。所以没有必要将 2 个 url 链接到单个视图。
给你一些建议:
-
在登录页面为什么不给出注册页面的链接,如果用户没有注册,那么他/她可以注册。
或使用查询字符串参数区分您的 URL。在注册页面的情况下,传递一个查询字符串参数。然后在登录视图中检查查询字符串参数,如果存在将其重定向到注册视图,否则显示登录页面。您的带有查询字符串的主页 url 看起来像
http://www.example.com?page=r #查询字符串可以选择任意键值对
【讨论】:
【参考方案2】:您应该编写自己的视图来执行此操作。您不能使用默认登录视图,但可以使用 Django 提供的其他部分:
https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-in 这是您登录用户的方式。
https://docs.djangoproject.com/en/dev/topics/auth/default/#module-django.contrib.auth.forms 如果您不想自己编写,这是一个登录表单。
【讨论】:
以上是关于Django - 一个 URL 链接到两个视图?的主要内容,如果未能解决你的问题,请参考以下文章
我的 Django 视图和 URL 不匹配某处给我一个空白屏幕
Django:将其转换为 DetailView - 使用来自 URL 的两个参数的视图函数
无法使用视图名称 (django-rest-framework) 解析超链接关系的 URL
我想创建一个 url,将链接指向我在 django 中的视图中的登录功能 我尝试了一切,但没有成功
django.core.exceptions.ImproperlyConfigured:无法使用视图名称“用户详细信息”解析超链接关系的 URL