>  기사  >  백엔드 개발  >  Django 튜토리얼: Django 사용자 등록 및 로그인 방법

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

高洛峰
高洛峰원래의
2017-03-10 13:49:383225검색

이 글은 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에 앱 계정을 추가합니다.

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

생성 프로젝트의 루트 디렉터리나 앱 디렉터리에 위치할 수 있는 템플릿 폴더. 일반적으로 앱 디렉토리에 배치하는 것이 좋습니다. 프로젝트의 루트 디렉터리에 넣는 경우 설정 파일 [os.path.join(BASE_DIR,'templates')]의 TEMPLATES에 'DIRS'를 설정해야 하며, 그렇지 않으면 템플릿을 사용할 수 없습니다.

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

게다가 이 프로젝트는 페이지 점프 문제가 있기 때문에 CSRF 공격을 안전하게 방지하기 위해 템플릿에 관련 설정이 있습니다. 아직 이 기능을 어떻게 사용하는지 모르겠습니다. 양식에 {% csrf_token %} 태그를 추가하면 달성할 수 있다고 하는데 성공하지 못했습니다. 따라서 먼저 이 문제를 무시하고

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

에서 미들웨어 '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 = &#39;post&#39; 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 = &#39;post&#39; 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 = &#39;post&#39;>
 <h1>恭喜,{{operation}}成功!</h1>
</form>
</body>
</html>

데이터베이스 업데이트:

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

서버 실행:

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

등록 페이지:

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

등록된 사용자가 이전에 등록하지 않은 경우 성공적으로 등록한 후 확인을 클릭하여 성공 인터페이스로 들어갈 수 있습니다

로그인 페이지:

Django 튜토리얼: Django 사용자 등록 및 로그인 방법

확인을 클릭하여 성공 페이지로 들어갑니다

여기까지 Django 사용자 등록 및 로그인에 대한 튜토리얼이 끝났습니다.

위 내용은 Django 튜토리얼: Django 사용자 등록 및 로그인 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.