Django:允许用户在Web应用程序上创建帐户

时间:2016-01-19 15:25:49

标签: python html django

我正在开发一个django项目,它允许用户创建一个帐户,登录,然后在应用程序上执行操作。我的代码中有基本的django教程,所以我可以通过管理站点添加用户,然后他们就可以登录并执行操作。但是,我真正想要做的是在登录页面上创建一个部分,其中没有帐户的用户可以输入他们的姓名,用户名和密码,然后使用这些凭据登录。我很漂亮Django的新手,所以我对于该做什么并不太了解。这是我的models.py,views.py和login.html的部分,它们可以让你知道我在哪里开始。

登录视图:

@login_required()
def my_view(request):
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            template_name = 'polls/index.html'
            context_object_name = 'latest_question_list'
            return render(request, 'polls/index.html', {
                'latest_question_list': Question.objects.order_by("pub_date"),
            })
        else:
            return render(request, 'polls/login.html', {
            'error_message': "Your username isn't active", 
            })
    else:
        return render(request, 'polls/login.html', {
        'error_message': "Your username doesn't exist", 
        })
class LoginView(generic.ListView):
    model = Question
    template_name = "polls/login.html"

适用的模型:

class Student(models.Model)
    school_name = models.CharField(max_length=500)
    user = models.OneToOneField(User)
    score = models.IntegerField()
    group = models.Charfield(max_length=200)

登录HTML:

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}
<form action="{% url 'polls:logged' %}" method="post">{% csrf_token %}

<h1>Username:</h1>
<input type="text" name="username" id="username"/>
<h1>Password:</h1>
<input type="text" name="password" id="password"/>
<input type="submit" value="Login" />

如果您想查看更多代码,请与我们联系。感谢我得到的任何和所有帮助!

2 个答案:

答案 0 :(得分:0)

查看built-in forms上的文档部分。 UserCreationForm和SetPasswordForm应该给你一个基本的想法。您可以在视图中使用它们,也可以根据这些示例使用自定义逻辑构建自己的逻辑。

答案 1 :(得分:0)

要在Django中创建用户注册表单,一个简单的方法就是:

观点:

def user_register(request):
# parse your form here
# create the user here
# don't forget set the user.active = True and login the user

html表单:

<form>
<!-- Your HTML form should have the Username/Email/Password fields -->
<!-- The HTML should also have the Name field as if you access it later using user.first_name it would through an exception -->
</form>

如果您未向用户添加任何新属性,则可以使用内置的用户模型。但是,如果您正在尝试扩展它 - 您可以将外键映射添加到新模型中,例如:

class UserWithMoreFields(models.Model)
user = models.OneToOneField(User)
# Your fields as you already have in your model.

真的是这样的。 根据你的观点快速观察一下:

@login_required 
# Your View should not have login_required , as this view calls for a user of your website to register for it .