首页 > 解决方案 > 如何在登录后检查用户是否提交了表单一,如果再次是,如果他再次登录,他应该重定向到表单 2,而不是在 django 中再次提交

问题描述

我有一个用户登录的应用程序,在他登录后,他会重定向到仪表板,其中出现一个表单,用户填写表单,一旦用户填写表单,他就会重定向到显示表单进度的下一页。因此,如果用户再次登录,他应该自动重定向到进度页面,如果他已经填写了表单页面,他应该不会再次获得表单页面。任何人都可以建议我如何实现这些。

views.py 

def create(request):
    if request.method == 'POST':
        post = AccountProfile()
        post.user = request.user
        post.name = request.POST['name']
        post.email = request.POST['email']
        post.mobile = request.POST['mobile']
        post.date = request.POST['date']
        post.sex = request.POST['sex']
        post.save()
        return render (request,'posts/dashboard-post-a-job.html')

这些是用户在登录和填写表单后重定向的视图。

标签: djangodjango-modelsdjango-formsdjango-users

解决方案


您应该将进度存储在数据库中。如果您只需要检查一个表单,则在AccountProfile模型中添加一个新列。

模型.py

class AccountProfile(models.Model):
    ...

    form1_submitted = models.BooleanField()

然后,一旦提交表单,您就可以更新此字段。

def create(request):
    if request.method == 'POST':
        post = AccountProfile()
        post.user = request.user
        post.name = request.POST['name']
        post.email = request.POST['email']
        post.mobile = request.POST['mobile']
        post.date = request.POST['date']
        post.sex = request.POST['sex']
        post.form1_submitted = True  # save the progress
        post.save()
        return render (request,'posts/dashboard-post-a-job.html')

现在,进度页面可以检查该字段的值并相应地呈现表单。


推荐阅读