登录后的Django重定向进入无限循环

问题描述 投票:0回答:1

这个问题早已得到解答,但这些解决方案对我不起作用。我的设置有Django 1.9和MongoDB作为后端。我有自定义用户模型。

我有一个网页,我上传文件。那流程工作正常。现在我必须使该页面登录受保护。当我试图访问https://localhost/upload时,它将我重定向到https://localhost/login_page?next=/upload我正在提供正确的凭据,我可以在django日志中看到它正在重新检查我/upload,但再次指向我返回登录页面。

models.朋友

    class Uploadedfiles(models.Model):
        docfile = models.FileField(upload_to='uploads')

views.朋友

    from django.contrib.auth.decorators import login_required

    import os

    @login_required()
    def uploadfiles(request):
        if request.method == 'POST':
            form = UploadForm(request.POST, request.FILES)
            if form.is_valid():
                newdoc = Uploadedfiles(docfile=request.FILES['docfile'])
                newdoc.save()
                return HttpResponseRedirect(reverse('upload'))
        else:
            form = UploadForm()  # A empty, unbound form

        ufiles = Uploadedfiles.objects.all()

        return render(
            request,
            'upload.html',
            {'ufiles': ufiles, 'form': form}

login_page.html

            <div>
    {% if next %}
    <form action="/login/?next={{ request.path }}" method="post" >
    {%else%}
    <form action="/login_page/" method="post" >
    {% endif %}
    {% csrf_token %}
        <p><b>Login</b></p>
            <input type="email" name="email" placeholder="Email" required="">
                    <input type="password" name="password" placeholder="Password" id="new_password">
                    <span id="message"></span>
                    <button type="submit" name="Login"><b>Login</b></button>
            </form>
            </div>

登录视图

    def LoginPage(request,*args, **kwargs):

        msg = "Please provide details"
        next = request.POST.get('next', request.GET.get('next', ''))

        if 'email' in request.POST and 'password' in request.POST:
            password=request.POST['password']
            email=request.POST['email']

            payload = { "password" : password, "email":email}
            response = requests.post('https://localhost/login',data=payload)
            code=response.status_code

            if '200'==code or 200==code:
                msg="Your are login successfully"
                print(msg)
                return HttpResponseRedirect("/upload")

            else:
                msg=response[msg]
                response = render(request,'login_page.html',{'msg':msg})
        else:
            response = render(request,'login_page.html',{})
        return response

URLs.朋友

    urlpatterns = [
        url(r'^login$', Login.as_view(), name=r"login"), #This is REST API 
        url(r'^login_page/$', LoginPage, name=r"loginpage")
        ]

请有人帮帮我..

编辑1:添加自定义用户模型

from mongoengine import fields, Document

class User(Document):
    id = fields.IntField(primary_key=True)
    username = fields.StringField(required=True)
    email = fields.EmailField()
    name = fields.StringField()
    password = fields.StringField(required=True)
django mongodb
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.