定制Django 2认证和授权系统

2024-04-19 17:05:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试一些我认为很简单的事情,但是没有任何效果。在

我通过添加到我的网址.py公司名称:

path('accounts/', include('django.contrib.auth.urls'), {'template_name': 'login.html', 'authentication_form': forms.LoginForm}),

这是我的网址.py公司名称:

^{pr2}$

我的项目有一个名为报告的应用程序,在这里我有我的模板文件夹,我已经添加了我的注册文件夹登录.html以及所有相关文件。在

我还在我的项目(报告)中创建了一个文件表单.py并补充道

from django.contrib.auth.forms import AuthenticationForm
# from django import forms

class LoginForm(AuthenticationForm):
    username = forms.CharField(widget=forms.TextInput(
        attrs={
        'class':'form-control',
        'placeholder':'Username'
        }
    ))
    password = forms.CharField(widget=forms.PasswordInput(
        attrs={
        'class':'form-control',
        'placeholder':'Password'
        }
    ))

我的表单已显示,但未添加类和占位符

有什么我需要补充或修改的建议吗?在

我的电流登录.html在

<form class="form-signin" method="post">
  {% csrf_token %} 
  {{ form.as_p }}
  <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
  <p class="mt-5 mb-3 text-muted">
    <a href="{% url 'password_reset' %}">Lost password?</a>
  </p>
</form>

Tags: 项目djangopyform名称authhtml公司
2条回答

你不能在这样的include上设置参数,这不是它的工作方式。您需要单独定义login视图。由于Django的URL解析的工作方式,只要您先定义更具体的URL,它就会与后面更一般的URL相匹配。所以:

from django.contrib.auth import views as auth_views

path('accounts/login', auth_views.LoginView.as_view(),  {'template_name': 'login.html', 'authentication_form': forms.LoginForm}, name='login'),
path('accounts/', include('django.contrib.auth.urls'), {'template_name': 'login.html', 'authentication_form': forms.LoginForm}),

更新:查看AuthenticationForm的源代码,username和{}是类变量。它们可能会在初始化期间设置为默认值。您可以使用django-widget-tweaks。然后可以渲染这两个字段:

{% load widget_tweaks %}
<form class="form-signin form-group" method="post">
    {% csrf_token %} 
    <label>{{ form.username.label_tag }}</label>
    {% render_field form.username class+='form-control' placeholder='Username' %}
    <label>{{ form.password.label_tag }}</label>
    {% render_field form.password class+='form-control' placeholder='Password' %}
    <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>

https://github.com/jazzband/django-widget-tweaks

相关问题 更多 >