Django 构建登录表单

Django 构建登录表单,django,Django,我正在用Django构建一个登录表单,就我对它的研究而言,我似乎无法创建一个独立于管理界面的登录表单。我的意思是,访问者不必是管理员中的注册用户。很像PHP和MySQL。我可以用PHP做我需要的事情,但我已经学习Python一段时间了,我想用Python构建它。Django真的给了我唯一的选择吗 让我想知道Pinterest是怎么做到的。我知道绝大多数应用程序都是在Django中构建的,人们会在首页上看到一个登录表单。事实上,有一些独立于管理员登录的登录视图: 将以下内容添加到URL.py: u

我正在用Django构建一个登录表单,就我对它的研究而言,我似乎无法创建一个独立于管理界面的登录表单。我的意思是,访问者不必是管理员中的注册用户。很像PHP和MySQL。我可以用PHP做我需要的事情,但我已经学习Python一段时间了,我想用Python构建它。Django真的给了我唯一的选择吗


让我想知道Pinterest是怎么做到的。我知道绝大多数应用程序都是在Django中构建的,人们会在首页上看到一个登录表单。

事实上,有一些独立于管理员登录的登录视图:

将以下内容添加到URL.py:

urlpatterns = [
    url('^', include('django.contrib.auth.urls')),
]
这将包括以下URL模式:

^login/$ [name='login']
^logout/$ [name='logout']
^password_change/$ [name='password_change']
^password_change/done/$ [name='password_change_done']
^password_reset/$ [name='password_reset']
^password_reset/done/$ [name='password_reset_done']
^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$ [name='password_reset_confirm']
^reset/done/$ [name='password_reset_complete']
^login/$[name='login']
^注销/$[name='logout']
^密码更改/$[name='password\u change']
^密码\u更改/done/$[name='password\u更改\u完成']
^密码\u重置/$[name='password\u重置']
^密码\u重置/done/$[name='password\u重置\u完成']
^重置/(?P[0-9A-Za-z \-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$[name='password\u reset\u confirm']
^重置/完成/$[name='password\u reset\u complete']

这些为非管理员用户提供登录/更改和重置密码等视图。作为安全预防措施,默认情况下,它们不包括注册视图(因为许多实现可能不允许随机人员注册)

您可能会发现这很有帮助。我没有写所有的解释,所以请搜索您不熟悉的属性或方法。此外,此实现缺少许多选项,如确认电子邮件地址等(这些是我目前的次要优先事项)。 在这种情况下,“password”和“username”是模型属性。 在这里,用户使用用户名和密码创建帐户后,将对其进行身份验证,用户将登录,然后重定向到指定的url

对于html/引导登录表单,请查看以下内容:

对于django实现,您可以执行以下步骤: 1) 制作html表单后,在url.py中添加适当的url行

2) 在项目中创建一个新文件,并将其命名为forms.py,然后: 来自django导入表单

class UserForm(forms.ModelsForm):
  email = form.CharField(widget=forms.EmailInput) 
  password = form.CharField(widget=forms.PasswordInput)

  class Meta:
    model = *write your model name here*
    fields = *fields from your model. The model design should include 
             username email password and other attributes*
3) 在views.py中:

from django.views.generic import View
from django.shortcuts import render, redirect

class UserFormView(View):
  form_class = UserForm
  template_name = *your html template*

  def get(self, request):
    form = self.form_class(None)
    return render(request, self.template_name, {'form':form})

  def post(self, request):
    form = self.form_class(request.POST)

    if form.is_valid():
      user = form.save(commit=False)
      username = form.cleaned_data['username']
      password = form.cleaned_data['password']
      user.set_password(password)
      user.save()

      user = authenticate(username=username, password=password)
      if user is not None and user.is_active:
        login(request, user)
        return redirect(*your redirecting url*) 
    return render(request, self.template_name, {'form':form})

你是说你想让用户注册然后登录你的网站?你说得对,我的朋友。我知道Django是一个非常高级的框架,它仍在开发和开发中。这让我有点吃惊,这个特殊的任务不是在不干扰admin的情况下完成的。哦,你是django的新手,好吧,django提供了创建用户(注册)和验证用户(登录)的功能,这方面有很多教程,但我认为最好的注册方法是使用@mohammedqudah登录,我会尝试一下,但它看起来与我已经拥有的非常相似:)我会仔细看看,以防错过一些重要的东西。你真的需要了解django的基本知识,并了解它是如何构建的。它提供了一些强有力的方法来处理这些事情。网上也有很多很好的资源,只要彻底搜索一下这个话题就可以了。最重要的是,你必须有耐心,花相当长的时间,并通过官方文件。