我正在开发一个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" />
如果您想查看更多代码,请与我们联系。感谢我得到的任何和所有帮助!
答案 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 .