我正在管理一个小型的django项目。我们的团队对这个问题有不同意见:
这是推荐登录,注销,注册(不是特定于应用程序的路由器)的方法吗?
# Login, Logout
url(r'^login/$', 'users.views.login_view', name='login'),
url(r'^logout/$', 'users.views.logout_view', name='logout'),
url(r'^signup/$', 'users.views.signup', name='signup'),
MY_PROJECT
> urls.py
原因:应该看到
MY_PROJECT/urls.py
中的整体网址和登录,注销,注册不是特定于应用的网址。
users
> urls.py
原因:应该将登录,注销和注册移动到用户应用程序,因为视图是在
users/views.py
中实现的,并且它是模块化视图中的首选方式。
.
├── MY_PROJECT
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── users
├── __init__.py
├── models.py
├── urls.py
└── views.py
用户应用程序用于使用UserProfile扩展基本用户
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User, unique=True, primary_key=True)
and so on ...
并且还要花费默认登录,注销和注册视图。例如:
def login_view(request):
return default_login_view(
request, template_name="users/login.html"
)
def logout_view(request):
logout(request)
return redirect("home")
答案 0 :(得分:0)
如果您将项目的所有常规网址放在MY_PROJECT / urls.py中,此文件的行数会增加很多。然后,当您需要跟踪特定网址时,查看此文件可能很难。
因此,如果MY_PROJECT / urls.py中的所有网址都采用以下格式,您可以节省大量时间搜索特定网址,而且您的代码也更清晰。
(r'^foo/', include('foo.urls')),
但是,如果您的用户应用程序很大,那么如果您使用单独的 urls.py 进行登录/注销/注册,则可能是更好的方法。这意味着在用户应用中将 urls.py 和 auth_urls.py 分开。