我正在尝试一些我认为必须很简单但没有任何效果的事情。
我通过添加到urls.py中添加了身份验证:
path('accounts/', include('django.contrib.auth.urls'), {'template_name': 'login.html', 'authentication_form': forms.LoginForm}),
这是我的urls.py:
from django.contrib import admin
from django.urls import path, include
from reports import views, forms
urlpatterns = [
path('', views.IndexView.as_view(), name='home'),
path('admin/', admin.site.urls),
path('accounts/', include('django.contrib.auth.urls'), {'template_name': 'login.html', 'authentication_form': forms.LoginForm}),
]
我的项目有一个名为“报告”的应用程序,在这里,我有我的模板文件夹,并在我的注册文件夹中添加了login.html和所有相关文件。
我还在项目中(报告)创建了一个forms.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'
}
))
显示我的表单,但未添加类和占位符
关于我需要添加或更改的任何建议吗?
我当前的login.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>
答案 0 :(得分:0)
您不能在这样的包含上设置参数,这不是它的工作原理。您将需要单独定义登录视图。由于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}),
答案 1 :(得分:-1)
更新:查看AuthenticationForm的源代码,username
和password
是类变量。它们可能会在初始化期间设置为其默认值。您可以使用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>