-1
重定向 - 卡車&公司使用Django。下面是一個用戶Registration Page如何不同類型的針對不同用戶的網頁登錄後,我已經創建了兩個不同類型的用戶的Django
註冊後我的註冊頁面,關於用戶是否是卡車或公司的數據將進入數據庫。
我想知道如何與獨特的EMAILID用戶可以重定向到根據用戶類型有效的頁面。
我認爲,認證並獲得來自POST請求(views.py)的數據,以我的登錄頁面無法正常工作。請有人幫我解決這個問題。
這裏是我的代碼:
views.py:
@csrf_protect
def login_view(request):
title = "Login"
if request.method == 'POST':
email = request.POST.get('email', '')
password = request.POST.get('password', '')
user = auth.authenticate(username=email, password=password)
form = LoginForm(data=request.POST)
if form.is_valid():
user_type = form.cleaned_data['Label']
if user_type == 'Truck':
return HttpResponseRedirect('/post_load/')
elif user_type == 'Company':
return HttpResponseRedirect('/live_deal/')
else:
form = LoginForm()
return render(request, 'registration/login.html', {'form' : form, 'title': title})
urls.py:
url(r'^login/$', 'django.contrib.auth.views.login', {'authentication_form': LoginForm}),
url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'authentication_form': LoginForm}),
forms.py:
class LoginForm(auth.forms.AuthenticationForm):
email = forms.EmailField(label=_("Email"),widget=forms.EmailInput)
CHOICES= (('Truck', 'Truck'),('Company', 'Company'),)
Label = forms.ChoiceField(choices=CHOICES, label='Label', widget=forms.RadioSelect())
的login.html:
{%extends "registration/header.html"%}
{% block content %}
{% if form.errors %}
<p>Your email and password didn't match. Please try again.</p>
{% endif %}
<form class="form-horizontal" method="post" action = "." >{%csrf_token%}
<div class="panel panel-default login">
<div class="panel-heading">
<span class="glyphicon glyphicon-lock"></span> Login</div>
<div class="panel-body">
<form class="form-horizontal" role="form">
<div class="form-group">
<div class='col-sm-6 col-sm-offset-4'>
<table border="0">
<div class="col-sm-4">
<tr><th><label for="id_user" class="col-sm-4 control-label">Email:</label></th><td>{{ form.email }}</td></tr> </div>
<div class="col-sm-4">
<tr><th><label for="id_password" class="col-sm-4 control-label">Password:</label></th><td>{{ form.password }}</td></tr> </div>
</table> </div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-4 col-sm-8">
<div class="checkbox">
<label>
<input type="checkbox"/>
Remember me
</label>
</div>
</div>
</div>
<div class="form-group last">
<div class="col-sm-offset-4 col-sm-8">
<button type="submit" class="btn btn-success btn-sm">
Sign in</button>
<input type="hidden" name="next" value="/" />
<label class="col-sm-offset-3">
<a href="#">Forget Password? </a>
</label>
</div>
</div>
</form>
</div>
<div class="panel-footer">
Not Registered? <a href="/register/">Register</a></div>
</div>
</form>
{% endblock %}
我編輯的代碼,如你所說@CODEkid。 但是,當我使用我的註冊頁面創建的有效憑證進行日誌記錄時,驗證不起作用。它引發錯誤「您的電子郵件和密碼不匹配,請重試。」如果用戶的詳細信息無效,我已在我的login.html中創建了這些內容。 – vanam
你重寫了authenticate()方法嗎?它需要'用戶名'和'密碼'作爲kwargs。 – CODEkid
我是Django bro的新手。我只是複製粘貼我想要的一切。你能幫我解決這個問題嗎?我已經重寫了我的自定義用戶創建窗體中的身份驗證方法(),因爲用戶名字段='email' – vanam