实现用户注册与登录、登出(三)

来源:互联网 发布:淘宝哪家mcm高仿比较好 编辑:程序博客网 时间:2024/04/30 16:42

注册(产生用户)和登录(认证用户)

from django.contrib.auth.forms import UserCreationForm, AuthenticationForm

V

定义登录和注册函数

from django.shortcuts import render, Http404, HttpResponse, redirectfrom website.models import Videofrom django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerfrom django.contrib.auth import authenticate, loginfrom website.form import LoginFormfrom 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 urlfrom django.contrib import adminfrom website.views import listing, index_login, index_registerfrom django.conf import settingsfrom django.conf.urls.static import staticfrom django.contrib.auth.views import logouturlpatterns = [    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="{% static  'css/list_custom.css' %}" media="screen" title="no title" charset="utf-8"></head><body>    <div class="ui inverted top fixed menu borderless red menu">        <div class="header item">            <div class="ui image">                <img src="{% static 'images/tenlogo.png' %}" alt="">            </div>        </div>        <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">                            {% if request.user.profile.profile_image %}                                <img src="/upload/{{ request.user.profile.profile_image }}" alt="" />                            {% else %}                                <img src="http://semantic-ui.com/images/avatar/small/matt.jpg" alt="" />                            {% endif %}                        </div>                    </h5>                </div>                <div class="item">                    <a href="{% url 'logout' %}" 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 }}</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">Signup/Login</a>                </div>            {% endif %}        </div>    </div>    <div class="ui inverted segment container nav">        <div class="ui  three borderless  item  menu">            <a class="item" >                All            </a>            <a class="item">                New            </a>            {% if 'editors' in request.path %}                <a class="active item" href="{% url 'list' %}editors">                Editor's            </a>            {% else %}                <a class="item" href="{% url 'list' %}editors">                Editor's            </a>            {% endif %}        </div>    </div>    <div class="ui basic segment container content">        <div class="ui three column grid">            {% for article in vids_list %}            <div class="column">                <a class="ui fluid card" href="{% url 'list' %}">                    <div class="image">                        {% if article.cover %}                            <img src="/upload/{{ article.cover }}" alt="" style="height:200px;object-fit: cover;">                        {% else %}                            <img src="{{ article.url_image }}" alt="" style="height:200px;object-fit: cover;">                        {% endif %}                    </div>                </a>                <div class="title header" href="{% url 'list' %}">{{ article.title }}</div>                <i class="icon grey unhide"></i>                <span style="color:#bbbbbb">{{ article.views }}</span>                <span class="" style="color:rgb(226, 226, 226)">|</span>                <i class="icon grey checkmark"></i>                <span style="color:#bbbbbb"> {{ article.favs }} people got it</span>            </div>            {% endfor %}        </div>    </div>    <div class="ui center aligned very padded vertical segment container">        <div class="ui pagination menu">            {% if vids_list.has_previous %}                <a href="?page={{ vids_list.previous_page_number }}" class="item">                    <i class="icon red left arrow"></i>                </a>            {% else %}                <a href="?page={{ vids_list.start_index }}" class="disabled item">                    <i class="icon left arrow"></i>                </a>            {% endif %}            {% if vids_list.has_next %}                <a href="?page={{ vids_list.next_page_number }}" class="item">                    <i class="icon red right arrow"></i>                </a>            {% else %}                <a href="?page={{ vids_list.end_index }}" class="disabled item">                    <i class="icon right arrow"></i>                </a>            {% endif %}        </div>    </div></body></html>

register_login.html

<h4 class="ui inverted right aligned header">                {% if 'register' in request.path %}                    <a href="{% url 'login' %}" style="color:#ff695e;">or LOGIN</a>                {% endif %}                {% if 'login' in request.path %}                    <a href="{% url 'register' %}" style="color:#ff695e;">or REGISTER</a>                {% endif %}            </h4>
<!DOCTYPE html>{% load staticfiles %}<html><head>    <meta charset="UTF-8">    <title>Login</title>    <link rel="stylesheet" href="{% static 'css/semantic.css' %}" media="screen" title="no title" charset="utf-8">    <link rel="stylesheet" href="{% static 'css/list_custom.css' %}" media="screen" title="no title" charset="utf-8">    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Oswald|Raleway">    <style type="text/css">        body {            background: url({% static 'images/super_blur_back2.jpg' %});            background-size: cover;        }        .ui.grid.divided.segment.container {            min-height: 400px;            width: 600px !important;            border: rgba(255, 0, 0, 0);            position: absolute;            left: 50%;            top: 40%;            transform: translate(-50%, -50%);        }        .five.wide.column {            background: url({% static 'images/red_regi.jpg' %});            background-size: cover;            background-position: 60% 0%;        }        form {            margin-top: 60px;        }        h1,h3,h4 {            font-family: 'Play', sans-serif !important;        }    </style></head><body>    <div class="ui grid divided segment container">        <div class="five wide column">            <h4 class="ui inverted header">                <i class="angle left icon"></i>            </h4>            <h1 class="ui inverted center aligned header" style="font-size: 40px;margin-top:55px">                <p class="sub header">Welcome to</p>GeekHome            </h1>        </div>        <div class="eleven wide column">            <h4 class="ui inverted right aligned header">                {% if 'register' in request.path %}                    <a href="{% url 'login' %}" style="color:#ff695e;">or LOGIN</a>                {% endif %}                {% if 'login' in request.path %}                    <a href="{% url 'register' %}" style="color:#ff695e;">or REGISTER</a>                {% endif %}            </h4>            <form class="ui form error" method="post">                {% if form.errors %}                    <div class="ui error message">                        {{ form.errors }}                    </div>                    {% for field in form %}                        <div class="{{ field.errors|yesno:'error, ' }} field">                            {{ field.label }}                            {{ field }}                        </div>                    {% endfor %}                {% else %}                    {% for field in form %}                        <div class="field">                            {{ field.label }}                            {{ field }}                        </div>                    {% endfor %}                {% endif %}                {% csrf_token %}                <button class="ui inverted red circular right floated button" type="submit">Done</button>            </form>        </div>    </div></body></html>
阅读全文
0 0
原创粉丝点击