【问题标题】:good practices in django authentication systemdjango 认证系统的良好实践
【发布时间】:2019-10-12 16:59:55
【问题描述】:

我有一个问题,在添加auth 应用程序 (django.contrib.auth.urls) 的身份验证 URL 时。

我应该在哪里添加模板? (login.html等)

我看到他们在项目的templates文件夹中添加:

project > templates > registration > login.html ...

我还看到他们在一个名为 registration 的应用程序中这样做:

|-- project
    |-- registration
        |-- templates
        |   |-- registration
        |       |-- login.html
        |           ....
        |
        |-- __init__.py
        |-- admin.py
            .....

但是这个名字并没有让我很信服,我也看到他们在名为 usersaccounts 的应用程序中这样做了

我应该在哪个应用程序中执行此操作? (accounts, users, registration)

哪一个是最佳实践?

我还想评论说我正在创建一个自定义用户模型,我认为它应该放在其中一个应用程序中,对吗?根据应用程序的名称,这将是最合乎逻辑的。

【问题讨论】:

    标签: python django django-models django-templates


    【解决方案1】:

    如果您要创建自定义用户应用程序,则可以将帐户模板放在 project/your_user_app/templates/registration 中。在这种情况下,your_user_app 需要位于 settings.py 中 INSTALLED_APPS 的顶部。

    在 settings.py 中

    INSTALLED_APPS = [
        'your_user_app',
        'django.contrib.admin',
        'django.contrib.auth',
         ...  
         ...
    ]
    
    
    AUTH_USER_MODEL = 'your_user_app.your_custom_user_model'
    
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
             ...
        },
    ]
    

    或者您可以将帐户模板放在 project/templates/registration 中并在 settings.py 中编辑 DIRS:

    TEMPLATES = [
        {
            ...
    
            'DIRS': [
                os.path.join(BASE_DIR, 'templates')
            ],
    
            ...
        },
    ]
    

    如果您没有自定义用户应用但只想自定义模板,第二个选项也适用。

    【讨论】:

    • 您对将自定义用户模型放入core 应用有何看法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多