日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

2.4.4.1、Django新建APP(acounts)

發(fā)布時(shí)間:2023/11/27 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2.4.4.1、Django新建APP(acounts) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

$django-admin.py startapp accounts

在oss/accounts修改forms.py(新建)和views.py如下:

注:綠字部分為注釋

views.py

################################################################

#coding=utf-8
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.contrib import messages
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login as auth_login ,logout as auth_logout
from django.utils.translation import ugettext_lazy as _
from forms import RegisterForm,LoginFormdef index(request):'''首頁(yè)視圖'''template_var={"w":_(u"歡迎您,請(qǐng)登錄!")}//初始化字典,key=wif request.user.is_authenticated()://如果用戶登錄返回值為1template_var["w"]=_(u"歡迎您 %s!")%request.user.username//修改字典key=w對(duì)應(yīng)的值為usernamereturn render_to_response("accounts/welcome.html",template_var,context_instance=RequestContext(request))//每個(gè)視圖函數(shù)的返回值,具體可參照官方文檔,這里表示用accounts/welcome.html模板渲染def register(request)://注冊(cè)用戶視圖'''注冊(cè)視圖'''template_var={}form = RegisterForm()//調(diào)用forms.py中RegisterForm() ,初始化form   if request.method=="POST"://模板register.html用POST方法提交表單form=RegisterForm(request.POST.copy())if form.is_valid()://判斷表單是否有效username=form.cleaned_data["username"]//先判斷再賦值email=form.cleaned_data["email"]password=form.cleaned_data["password"]user=User.objects.create_user(username,email,password)//調(diào)用Django.auth中創(chuàng)建用戶的函數(shù)創(chuàng)建用戶create_user()user.save()//存儲(chǔ)添加的用戶到數(shù)據(jù)庫(kù)_login(request,username,password)#注冊(cè)完畢 直接登陸//調(diào)用veiws.py中的登錄核心方法return HttpResponseRedirect(reverse("index"))//登錄成功跳轉(zhuǎn)到urls中對(duì)應(yīng)name=index的視圖    template_var["form"]=form//把form中存儲(chǔ)的user,password,email記錄在字典template_var中        return render_to_response("accounts/register.html",template_var,context_instance=RequestContext(request))def login_view(request):'''登陸視圖'''template_var={}form = LoginForm()    if request.method == 'POST':form=LoginForm(request.POST.copy())if form.is_valid():_login(request,form.cleaned_data["username"],form.cleaned_data["password"])return HttpResponseRedirect(reverse("index"))template_var["form"]=form        return render_to_response("accounts/login.html",template_var,context_instance=RequestContext(request))def _login(request,username,password):'''登陸核心方法'''ret=Falseuser=authenticate(username=username,password=password)if user:if user.is_active:auth_login(request,user)//調(diào)用Django的login方法(這里是重命名的,參照f(shuō)rom XX import XX as xx)ret=Trueelse:messages.add_message(request, messages.INFO, _(u'用戶沒有激活'))else:messages.add_message(request, messages.INFO, _(u'用戶不存在'))return ret//返回登錄狀態(tài)def logout_view(request):'''注銷視圖'''auth_logout(request)return HttpResponseRedirect(reverse('index'))//注銷后跳轉(zhuǎn)到index

forms.py

#coding=utf-8
from django import forms
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _class RegisterForm(forms.Form):username=forms.CharField(label=_(u"昵稱"),max_length=30,widget=forms.TextInput(attrs={'size': 20,}))password=forms.CharField(label=_(u"密碼"),max_length=30,widget=forms.PasswordInput(attrs={'size': 20,}))email=forms.EmailField(label=_(u"郵件"),max_length=30,widget=forms.TextInput(attrs={'size': 30,}))def clean_username(self):'''驗(yàn)證重復(fù)昵稱'''users = User.objects.filter(username__iexact=self.cleaned_data["username"])if not users:return self.cleaned_data["username"]raise forms.ValidationError(_(u"該昵稱已經(jīng)被使用請(qǐng)使用其他的昵稱"))def clean_email(self):'''驗(yàn)證重復(fù)email'''emails = User.objects.filter(email__iexact=self.cleaned_data["email"])if not emails:return self.cleaned_data["email"]raise forms.ValidationError(_(u"該郵箱已經(jīng)被使用請(qǐng)使用其他的"))class LoginForm(forms.Form):username=forms.CharField(label=_(u"昵稱"),max_length=30,widget=forms.TextInput(attrs={'size': 20,}))password=forms.CharField(label=_(u"密碼"),max_length=30,widget=forms.PasswordInput(attrs={'size': 20,}))

在oss/templates/accounts中添加login.html,register.html和welcome.html?

################################################################

login.html

<html lang="en">
<head><title>Account Login</title>
</head>
<body>{% if messages %}
<ul>{% for message in messages %}<li>{{ message }}</li>{% endfor %}
</ul>
{% endif %}<form action="" method="post">{% csrf_token %}//防止用戶重復(fù)非法登錄<table border="0" cellpadding="0" >{{form.as_table}}        </table><p> <a href="{%url "register_view"%}">注冊(cè)</a> <a href="{%url "index"%}">返回首頁(yè)</a> <input type="submit" value="登錄"/></p></form>
</body>
</html>

################################################################

Register.html

<html lang="en">
<head><title>用戶注冊(cè)</title>
</head>
<body><form action="" method="post">{% csrf_token %}<table border="0" cellpadding="0" >{{form.as_table}}        </table><p> <a href="{% url "login_view" %}">登陸</a> <a href="{% url "index" %}">返回首頁(yè)</a> <input type="submit" value="注冊(cè)"/></p></form>
</body>
</html>

################################################################

Welcome.html

<html lang="en">
<head><title>Welcome!</title>
</head>
<body><h2>{{w}}</h2>//調(diào)用login視圖里的字典(key=w)<hr/>
{% if messages %}
<ul class="messages">{% for message in messages %}<li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>{% endfor %}
</ul>
{% endif %}
{% if user.is_authenticated %}<a href="{% url "logout_view" %}">注銷</a><a href="{% url "index_oss" %}">返回hrloo_oss主頁(yè)</a>
{% else %}<a href="{% url "login_view" %}">登陸</a>  |<a href="{% url "register_view" %}">注冊(cè)</a>
{% endif %}
</body>
</html>

在oss/urls.py 中添加如下url

url(r'^accounts/login/$', 'oss.accounts.views.login_view', name='login_view'),

url(r'^accounts/logout$', 'oss.accounts.views.logout_view', name='logout_view'),

url(r'^accounts/register$', 'oss.accounts.views.register', name='register_view'),

?

現(xiàn)在啟動(dòng)web服務(wù):python manage.py runserver 10.1.1.145:8000

訪問(wèn)url:http://10.1.1.145:8000/accounts/login 就可以看到登錄界面,注冊(cè)和登出操作訪問(wèn)相應(yīng)url就可以實(shí)現(xiàn)。

轉(zhuǎn)載于:https://www.cnblogs.com/fremcode/p/3842199.html

總結(jié)

以上是生活随笔為你收集整理的2.4.4.1、Django新建APP(acounts)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。