如何将 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}))