如何将 kwarg/arg 从 auth_views.login 传递到 django 中不同视图的 url 参数
How to pass a kwarg/arg from auth_views.login to a url parameter of a different view in django
我目前正在使用 django auth_views.login 将我的用户登录到他们的帐户。
我需要传递用户的属性,例如pk/username/etc。到我的用户个人资料视图。
我的资料 url 是:
url(r'^(?P<pk>[\w.@+-]+)$', ProfileDashboardView , name='dashboard')
一旦用户登录,我将如何获得他们的用户属性,例如pk/id/username/etc。传入 url?
在实际推进我的观点之前,我正在使用 TDD 进行测试。
这是我目前的看法:
@login_required
def ProfileDashboardView(request, name=None):
usr_name = IbkUser.objects.get(name=name)
return render(request, 'profiles/profile_dashboard.html')
我正在为我的用户帐户使用 AbstractBaseUser 模型,该模型扩展了 USER 模型并使用电子邮件作为用户名进行登录。
我还在登录表单中使用 AuthenticationForm,在样式中使用 crispy 表单。
我的表格:
class LoginAuthenticationForm(AuthenticationForm):
"""
A user login form for registered users.
"""
username = forms.EmailField(label='Email', required=True, widget=forms.TextInput(attrs={'id': 'login_username'}))
password = forms.CharField(label='Password', required=True,widget=forms.PasswordInput(attrs={'id': 'login_password'}))
def __init__(self, *args, **kwargs):
super(LoginAuthenticationForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = 'loginForm'
self.helper.form_method = 'post'
self.helper.layout = Layout(
PrependedText('username', "<span class='glyphicon glyphicon-envelope'></span>", active=True),
PrependedText('password', "<span class='glyphicon glyphicon-lock'></span>", active=True),
FormActions(
Submit('submit', 'Submit', css_class ='btn btn-success btn-lg btn-block'),
),
)
这是我的登录模板:
{% extends "auths/base.html" %}
{%load staticfiles%}
{% load crispy_forms_tags%}
{%block auths_title%}Login{%endblock auths_title%}
{%block auths_css%}{%endblock auths_css%}
{%block auths_body%}
<div class="row" id="signup-container">
<div class="col-md-4"></div>
<div class="col-md-4">
<div class="page-header text-info text-center">
<h2>Login</h2>
</div>
{% crispy form form.helper %}
<p class="text-center">
Forgot your password? <a href="{% url 'auths:recover'%}">Reset Password</a>
</p>
<p class="text-center">
<small>Don't have an account ? <a href="{% url 'accounts:register' %}">Sign up</a></small>
</p>
<div class="col-md-4"></div>
</div>
</div>
{%endblock auths_body%}
还是我应该做我自己的自定义视图?哈哈
您需要的是重定向...
from django.shortcuts import redirect
from django.core.urlresolvers import reverse_lazy
def my_login(request)
# your login stuff...
return redirect(reverse_lazy('dashboard',kwargs={'name':request.user.username}))
我目前正在使用 django auth_views.login 将我的用户登录到他们的帐户。
我需要传递用户的属性,例如pk/username/etc。到我的用户个人资料视图。
我的资料 url 是:
url(r'^(?P<pk>[\w.@+-]+)$', ProfileDashboardView , name='dashboard')
一旦用户登录,我将如何获得他们的用户属性,例如pk/id/username/etc。传入 url?
在实际推进我的观点之前,我正在使用 TDD 进行测试。
这是我目前的看法:
@login_required
def ProfileDashboardView(request, name=None):
usr_name = IbkUser.objects.get(name=name)
return render(request, 'profiles/profile_dashboard.html')
我正在为我的用户帐户使用 AbstractBaseUser 模型,该模型扩展了 USER 模型并使用电子邮件作为用户名进行登录。
我还在登录表单中使用 AuthenticationForm,在样式中使用 crispy 表单。
我的表格:
class LoginAuthenticationForm(AuthenticationForm):
"""
A user login form for registered users.
"""
username = forms.EmailField(label='Email', required=True, widget=forms.TextInput(attrs={'id': 'login_username'}))
password = forms.CharField(label='Password', required=True,widget=forms.PasswordInput(attrs={'id': 'login_password'}))
def __init__(self, *args, **kwargs):
super(LoginAuthenticationForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_id = 'loginForm'
self.helper.form_method = 'post'
self.helper.layout = Layout(
PrependedText('username', "<span class='glyphicon glyphicon-envelope'></span>", active=True),
PrependedText('password', "<span class='glyphicon glyphicon-lock'></span>", active=True),
FormActions(
Submit('submit', 'Submit', css_class ='btn btn-success btn-lg btn-block'),
),
)
这是我的登录模板:
{% extends "auths/base.html" %}
{%load staticfiles%}
{% load crispy_forms_tags%}
{%block auths_title%}Login{%endblock auths_title%}
{%block auths_css%}{%endblock auths_css%}
{%block auths_body%}
<div class="row" id="signup-container">
<div class="col-md-4"></div>
<div class="col-md-4">
<div class="page-header text-info text-center">
<h2>Login</h2>
</div>
{% crispy form form.helper %}
<p class="text-center">
Forgot your password? <a href="{% url 'auths:recover'%}">Reset Password</a>
</p>
<p class="text-center">
<small>Don't have an account ? <a href="{% url 'accounts:register' %}">Sign up</a></small>
</p>
<div class="col-md-4"></div>
</div>
</div>
{%endblock auths_body%}
还是我应该做我自己的自定义视图?哈哈
您需要的是重定向...
from django.shortcuts import redirect
from django.core.urlresolvers import reverse_lazy
def my_login(request)
# your login stuff...
return redirect(reverse_lazy('dashboard',kwargs={'name':request.user.username}))