이 글은 Django 튜토리얼에서 Django 사용자 등록 및 로그인 방법에 대한 관련 정보를 주로 소개하고 있으니 필요하신 분들은 참고하시면 됩니다.
Django는 Python으로 개발된 무료 오픈소스 웹사이트 프레임워크로, 고성능의 우아한 웹사이트를 빠르게 구축하는 데 사용됩니다!
Django를 배우는 것은 최근에 가장 간단한 사용자 로그인 및 등록 인터페이스를 만드는 것이 너무 어렵습니다. 기능은 매우 간단하지만 나중에 기록해 두겠습니다. 더 자세히 알아봅니다. 보충:
먼저 프로젝트를 생성하고 프로젝트가 있는 디렉터리로 이동합니다: django-admin startproject deco0414_userauth
프로젝트 입력: cd deco0414_userauth
해당 앱 생성:django-admin startapp 계정
전체 프로젝트의 구조는 그림과 같습니다
├─ ─ 계정
│ ├── admin.py
│ ├── admin.pyc
│ ├── apps.py
│ ├── init.py
│ ├── init .pyc
│ ├── 마이그레이션
│ │ ├ ── 0001_initial.py
│ │ ├── 0001_initial.pyc
│ │ ├── init.py
│ │ └─ ─ init.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── test.py
│ ├── urls.py
│ ├─ ─ urls.pyc
│ ├── views.py
│ └── views.pyc
├── deco0414_userauth
│ ├── init.py
│ ├── init. pyc
│ ├── settings.py
│ ├ ── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi. py
│ └── wsgi.pyc
├─ ─ 관리.py
└── 템플릿
├── Register.html
├── 성공.html
└─ ─ userlogin.html
디렉터리 4개, 파일 29개
그런 다음 설정 파일의 install_app에 앱 계정을 추가합니다.
생성 프로젝트의 루트 디렉터리나 앱 디렉터리에 위치할 수 있는 템플릿 폴더. 일반적으로 앱 디렉토리에 배치하는 것이 좋습니다. 프로젝트의 루트 디렉터리에 넣는 경우 설정 파일 [os.path.join(BASE_DIR,'templates')]의 TEMPLATES에 'DIRS'를 설정해야 하며, 그렇지 않으면 템플릿을 사용할 수 없습니다.
게다가 이 프로젝트는 페이지 점프 문제가 있기 때문에 CSRF 공격을 안전하게 방지하기 위해 템플릿에 관련 설정이 있습니다. 아직 이 기능을 어떻게 사용하는지 모르겠습니다. 양식에 {% csrf_token %} 태그를 추가하면 달성할 수 있다고 하는데 성공하지 못했습니다. 따라서 먼저 이 문제를 무시하고
에서 미들웨어 'django.middleware.csrf.CsrfViewMiddleware'를 주석 처리한 후 모델에 해당 항목을 생성합니다. 데이터베이스에 해당 프로그램:
class User(models.Model): username = models.CharField(max_length=50) password = models.CharField(max_length=50) email = models.EmailField()
view. Pdb는 중단점 디버깅에 사용되었습니다. 매우 마음에 들었습니다. 관심 없으시면 직접 댓글 달아주세요.
#coding=utf-8 from django.shortcuts import render,render_to_response from django import forms from django.http import HttpResponse,HttpResponseRedirect from django.template import RequestContext from django.contrib import auth from models import User import pdb def login(request): if request.method == "POST": uf = UserFormLogin(request.POST) if uf.is_valid(): #获取表单信息 username = uf.cleaned_data['username'] password = uf.cleaned_data['password'] userResult = User.objects.filter(username=username,password=password) #pdb.set_trace() if (len(userResult)>0): return render_to_response('success.html',{'operation':"登录"}) else: return HttpResponse("该用户不存在") else: uf = UserFormLogin() return render_to_response("userlogin.html",{'uf':uf}) def register(request): curtime=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()); if request.method == "POST": uf = UserForm(request.POST) if uf.is_valid(): #获取表单信息 username = uf.cleaned_data['username'] #pdb.set_trace() #try: filterResult = User.objects.filter(username = username) if len(filterResult)>0: return render_to_response('register.html',{"errors":"用户名已存在"}) else: password1 = uf.cleaned_data['password1'] password2 = uf.cleaned_data['password2'] errors = [] if (password2 != password1): errors.append("两次输入的密码不一致!") return render_to_response('register.html',{'errors':errors}) #return HttpResponse('两次输入的密码不一致!,请重新输入密码') password = password2 email = uf.cleaned_data['email'] #将表单写入数据库 user = User.objects.create(username=username,password=password1) #user = User(username=username,password=password,email=email) user.save() pdb.set_trace() #返回注册成功页面 return render_to_response('success.html',{'username':username,'operation':"注册"}) else: uf = UserForm() return render_to_response('register.html',{'uf':uf}) class UserForm(forms.Form): username = forms.CharField(label='用户名',max_length=100) password1 = forms.CharField(label='密码',widget=forms.PasswordInput()) password2 = forms.CharField(label='确认密码',widget=forms.PasswordInput()) email = forms.EmailField(label='电子邮件') class UserFormLogin(forms.Form): username = forms.CharField(label='用户名',max_length=100) password = forms.CharField(label='密码',widget=forms.PasswordInput())
Tepaltes 폴더에는 총 3페이지가 있습니다:
Register.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>用户注册</title> </head> <style type="text/css"> body{color:#efd;background:#453;padding:0 5em;margin:0} h1{padding:2em 1em;background:#675} h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em} p{margin:1em 0} </style> <body> <h1>注册页面:</h1> <form method = 'post' enctype="multipart/form-data"> {{uf.as_p}} {{errors}} </br> <input type="submit" value = "ok" /> </form> </body> </html>
Userlogin.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>用户注册</title> </head> <style type="text/css"> body{color:#efd;background:#453;padding:0 5em;margin:0} h1{padding:2em 1em;background:#675} h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em} p{margin:1em 0} </style> <body> <h1>登录页面:</h1> <form method = 'post' enctype="multipart/form-data"> {{uf.as_p}} <input type="submit" value = "ok" /> </form> </body> </html>
Success.html
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> </head> <body> <form method = 'post'> <h1>恭喜,{{operation}}成功!</h1> </form> </body> </html>
데이터베이스 업데이트:
서버 실행:
등록 페이지:
등록된 사용자가 이전에 등록하지 않은 경우 성공적으로 등록한 후 확인을 클릭하여 성공 인터페이스로 들어갈 수 있습니다
로그인 페이지:
확인을 클릭하여 성공 페이지로 들어갑니다
여기까지 Django 사용자 등록 및 로그인에 대한 튜토리얼이 끝났습니다.
위 내용은 Django 튜토리얼: Django 사용자 등록 및 로그인 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!