注册(产生用户)和登录(认证用户)
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
V
定义登录和注册函数
from django.shortcuts import render, Http404, HttpResponse, redirect
from website.models import Video
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth import authenticate, login
from website.form import LoginForm
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
# Create your views here.
def listing(request, cate=None):
context = {}
if cate is None:
vids_list = Video.objects.all()
if cate == 'editors':
vids_list = Video.objects.filter(editors_choice=True)
else:
vids_list = Video.objects.all()
page_robot = Paginator(vids_list, 9)
page_num = request.GET.get('page')
try:
vids_list = page_robot.page(page_num)
except EmptyPage:
vids_list = page_robot.page(page_robot.num_pages)
#raise Http404('EmptyPage')
except PageNotAnInteger:
vids_list = page_robot.page(1)
context['vids_list'] = vids_list
return render(request, 'listing.html', context)
def index_login(request):
context = {}
if request.method == "GET":
form = AuthenticationForm
if request.method == "POST":
form = AuthenticationForm(data=request.POST)
if form.is_valid():
login(request, form.get_user())
return redirect(to='list')
context['form'] = form
return render(request, 'register_login.html', context)
def index_register(request):
context = {}
if request.method == 'GET':
form = UserCreationForm
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
return redirect(to='login')
context['form'] = form
return render(request, 'register_login.html', context)
U
给登录,注册,登出各定义一个url
from django.conf.urls import url
from django.contrib import admin
from website.views import listing, index_login, index_register
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth.views import logout
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^list/$', listing, name='list'),
url(r'^list/(?P<cate>[A-Za-z]+)$', listing, name='list'),
url(r'^login/$', index_login, name='login'),
url(r'^register/$', index_register, name='register'),
url(r'^logout/$', logout, {
'next_page':'/register'},name='logout'),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
#在本地运行时使用
T
插入登出,登录,注册url
listing.html
<div class="item">
<a href="{% url 'logout' %}" class="ui inverted circular button">Logout</a>
</div>
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="{% static 'css/semantic.css' %}" media="screen" title="no title" charset="utf-8">
<link rel="stylesheet" href=