Django User.authenticate()表现有趣

时间:2015-05-12 19:25:12

标签: python django authentication

我的用户只需通过注册页面分两个阶段(页面)注册:

  1. 收集用户名,电子邮件和密码 - 将这些存储在我的模型(myUsers)中,也存储在Django的User模型中,以进行身份​​验证和角色分配。
  2. 收集用户的兴趣,该兴趣添加到在1中创建的myUsers对象,然后定向到主页。
  3. 现在,我的大多数观看次数都有@login_required()封装,但刚注册并定向到家的用户无法访问这些观看次数,但老用户可以访问这些观看次数。

    用户通过登录页面登录:

    sign_in = sign_in_form(request.POST or None)
    if sign_in.is_valid():
        user_name = sign_in.cleaned_data['username']
        user_password = sign_in.cleaned_data['password']
        user = authenticate(username = user_name, password = user_password)
        if user is not None:
            if user.is_active:
                login(request, user)
            else:
                #handle_this
    

    以上代码运行良好,用户可以访问所有<{>>视图,其中包含login_required。但是,如果我尝试authenticate()注册用户,他们就无法使用@login_required访问观看次数

    sign_up = sign_up_form(request.POST or None)
        if sign_up.is_valid():
            user_name = sign_up.cleaned_data['username']
            user_email = sign_up.cleaned_data['email']
            user_password = sign_up.cleaned_data['password']
            #Save all these information to myUsers model and save same to User model.
            user = authenticate(username = user_name, password = user_password)
            if user is not None:
                if user.is_active:
                    login(request, user)
                    #Proceed to page two and then to home page after saving user's interest to myUsers model.
                else:
                    #handle_this
    

    现在,如果此用户完成了她的注册过程并且主页的收益尝试访问包含login_required视图,则会抛出:

    http://127.0.0.1:8000/accounts/login/?next=/mySite/user/yax/

    找不到页面(404)

    请求方法:GET 请求网址:http://127.0.0.1:8000/accounts/login/?next=/mySite/user/yax/

    使用myProject.urls中定义的URLconf,Django按以下顺序尝试了这些URL模式:

    ^ MYSITE /

    当前网址(accounts / login /)与其中任何一个都不匹配。

    他们必须再次注销登录以使一切正常。我该怎么做才能防止这种情况?

0 个答案:

没有答案