我正在Django中构建一个登录表单,就我的研究而言,似乎我无法创建独立的登录表单"来自管理界面。我的意思是访问者不必在管理员中注册用户。与PHP和MySQL非常相似。我可以用PHP做我需要的东西,但我已经学习了一段时间的Python,并希望用Python构建它。 Django真的给了我这个唯一的选择吗?
让我想知道Pinterest是如何做到这一点的。我知道绝大多数应用程序都是在Django中构建的,人们会在首页上看到一个登录表单。
答案 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})