日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

2.4.4.1、Django新建APP(acounts)

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

$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):'''首頁視圖'''template_var={"w":_(u"歡迎您,請登錄!")}//初始化字典,key=wif request.user.is_authenticated()://如果用戶登錄返回值為1template_var["w"]=_(u"歡迎您 %s!")%request.user.username//修改字典key=w對應(yīng)的值為usernamereturn render_to_response("accounts/welcome.html",template_var,context_instance=RequestContext(request))//每個視圖函數(shù)的返回值,具體可參照官方文檔,這里表示用accounts/welcome.html模板渲染def register(request)://注冊用戶視圖'''注冊視圖'''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()//存儲添加的用戶到數(shù)據(jù)庫_login(request,username,password)#注冊完畢 直接登陸//調(diào)用veiws.py中的登錄核心方法return HttpResponseRedirect(reverse("index"))//登錄成功跳轉(zhuǎn)到urls中對應(yīng)name=index的視圖    template_var["form"]=form//把form中存儲的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方法(這里是重命名的,參照from 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)被使用請使用其他的昵稱"))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)被使用請使用其他的"))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"%}">注冊</a> <a href="{%url "index"%}">返回首頁</a> <input type="submit" value="登錄"/></p></form>
</body>
</html>

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

Register.html

<html lang="en">
<head><title>用戶注冊</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" %}">返回首頁</a> <input type="submit" value="注冊"/></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主頁</a>
{% else %}<a href="{% url "login_view" %}">登陸</a>  |<a href="{% url "register_view" %}">注冊</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)在啟動web服務(wù):python manage.py runserver 10.1.1.145:8000

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

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

總結(jié)

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

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