在 Django 中创建帐户应用程序是一种好习惯吗?
Is creating an accounts app in Django a good practice?
我想知道在 Django 中创建帐户应用程序是否是一个好习惯。
假设您有一个名为 mysite
的 Django 项目,您在其中创建了两个应用程序:core
,其中包含一些业务逻辑,以及 accounts
.
mysite/accounts/urls.py
urlpatterns = [
url('^', include('django.contrib.auth.urls')),
]
mysite/mysite/urls.py
urlpatterns = [
url(r'^accounts/', include('accounts.urls')),
url(r'^core/', include('core.urls')),
]
mysite/accounts/templates/registration/login.html
{% extends "base.html" %}
{% block content %}
{# Content of login page #}
{% endblock %}
mysite/core/templates/base.html
<!DOCTYPE html>
<html>
<body>
{% block content %}{% endblock %}
</body>
</html>
然后我为 django.contrib.auth.urls
中的视图创建所有其他必要的模板。
当然别忘了把这两个应用程序外挂:
mysite/mysite/settings.py
INSTALLED_APPS = [
'accounts.apps.AccountsConfig',
'core.apps.CoreConfig',
# ...
]
所有这些都是好的做法还是我应该将整个帐户和身份验证管理集成到 core
应用程序中?
这在很大程度上取决于您的个人喜好,但我会说帐户绝对值得单独应用。
但是,我不会将任何业务逻辑放入核心应用程序中。 Core app 通常包含一些共享的 utils、mixins、模板、抽象模型,这些在多个其他 app 中使用。特定的业务逻辑应在单独的应用程序中实现。
如果你能得到 https://www.twoscoopspress.com/products/two-scoops-of-django-1-8,它会更详细地描述这种设置。
我想知道在 Django 中创建帐户应用程序是否是一个好习惯。
假设您有一个名为 mysite
的 Django 项目,您在其中创建了两个应用程序:core
,其中包含一些业务逻辑,以及 accounts
.
mysite/accounts/urls.py
urlpatterns = [
url('^', include('django.contrib.auth.urls')),
]
mysite/mysite/urls.py
urlpatterns = [
url(r'^accounts/', include('accounts.urls')),
url(r'^core/', include('core.urls')),
]
mysite/accounts/templates/registration/login.html
{% extends "base.html" %}
{% block content %}
{# Content of login page #}
{% endblock %}
mysite/core/templates/base.html
<!DOCTYPE html>
<html>
<body>
{% block content %}{% endblock %}
</body>
</html>
然后我为 django.contrib.auth.urls
中的视图创建所有其他必要的模板。
当然别忘了把这两个应用程序外挂:
mysite/mysite/settings.py
INSTALLED_APPS = [
'accounts.apps.AccountsConfig',
'core.apps.CoreConfig',
# ...
]
所有这些都是好的做法还是我应该将整个帐户和身份验证管理集成到 core
应用程序中?
这在很大程度上取决于您的个人喜好,但我会说帐户绝对值得单独应用。
但是,我不会将任何业务逻辑放入核心应用程序中。 Core app 通常包含一些共享的 utils、mixins、模板、抽象模型,这些在多个其他 app 中使用。特定的业务逻辑应在单独的应用程序中实现。
如果你能得到 https://www.twoscoopspress.com/products/two-scoops-of-django-1-8,它会更详细地描述这种设置。