构建登录表单

时间:2017-11-21 14:51:18

标签: django

我正在Django中构建一个登录表单,就我的研究而言,似乎我无法创建独立的登录表单"来自管理界面。我的意思是访问者不必在管理员中注册用户。与PHP和MySQL非常相似。我可以用PHP做我需要的东西,但我已经学习了一段时间的Python,并希望用Python构建它。 Django真的给了我这个唯一的选择吗?

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

2 个答案:

答案 0 :(得分:0)

实际上,登录视图独立于管理员登录as per the docs

将以下内容添加到您的urls.py:

urlpatterns = [
    url('^', include('django.contrib.auth.urls')),
]

这将包括以下网址格式:

^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']

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

答案 1 :(得分:0)

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

对于html / bootstrap登录表单,请查看以下内容: https://bootsnipp.com/search?q=login

对于django实现,您可以按照以下步骤操作: 1)制作html表格后,在urls.py

中添加适当的网址行

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})