实现登录功能
(只实现了从登录页面登录,admin后台退出的页面)
F
from django import forms
class LoginForm(forms.Form):
username = forms.CharField()
password = forms.CharField()
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
# 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 = LoginForm
if request.method == "POST":
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
user = authenticate(username=username, password=password)
if user:
login(request, user)
return redirect(to='list')
else:
return HttpResponse('<h1>Not A USER!</h1>')
context['form'] = form
return render(request, 'register_login.html', context)
U
from django.conf.urls import url
from django.contrib import admin
from website.views import listing, index_login
from django.conf import settings
from django.conf.urls.static import static
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'),
]
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
#在本地运行时使用
T
listing.html
判断列表页面显示名字还是默认
<div class="right menu">
{% if request.user.is_authenticated %}
<div class="item">
<h5 class="ui inverted header">
<span style="margin-right:20px;">{
{ request.user.username }}</span>
<div class="ui mini circular image">
<img src="http://semantic-ui.com/images/avatar/small/matt.jpg" alt="" />
</div>
</h5>
</div>
<div class="item">
<a href="#" class="ui inverted circular button">Logout</a>
</div>
{% else %}
<div class="item">
<h5 class="ui inverted header">
<span style="margin-right:20px">{
{ request.user.username