$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对应的值为usernamereturn render_to_response("accounts/welcome.html",template_var,context_instance=RequestContext(request))//每个视图函数的返回值,具体可参照官方文档,这里表示用accounts/welcome.html模板渲染def register(request)://注册用户视图'''注册视图'''template_var={}form = RegisterForm()//调用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)//调用Django.auth中创建用户的函数创建用户create_user()user.save()//存储添加的用户到数据库_login(request,username,password)#注册完毕 直接登陆//调用veiws.py中的登录核心方法return HttpResponseRedirect(reverse("index"))//登录成功跳转到urls中对应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)//调用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//返回登录状态def logout_view(request):'''注销视图'''auth_logout(request)return HttpResponseRedirect(reverse('index'))//注销后跳转到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):'''验证重复昵称'''users = User.objects.filter(username__iexact=self.cleaned_data["username"])if not users:return self.cleaned_data["username"]raise forms.ValidationError(_(u"该昵称已经被使用请使用其他的昵称"))def clean_email(self):'''验证重复email'''emails = User.objects.filter(email__iexact=self.cleaned_data["email"])if not emails:return self.cleaned_data["email"]raise forms.ValidationError(_(u"该邮箱已经被使用请使用其他的"))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 %}//防止用户重复非法登录<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>//调用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'),

现在启动web服务:python manage.py runserver 10.1.1.145:8000

访问url:http://10.1.1.145:8000/accounts/login 就可以看到登录界面,注册和登出操作访问相应url就可以实现。

转载于:https://www.cnblogs.com/fremcode/p/3842199.html

2.4.4.1、Django新建APP(acounts)相关推荐

  1. Django的APP,视图,url和模板

    新建app 在项目的根目录执行python manage.py startapp app名字 URL概念: URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到 ...

  2. django新建一个项目_如何使用Django创建项目

    django新建一个项目 Now that we know how to create virtual environments and use pip, we can begin building ...

  3. Django创建APP

    Django创建APP 原理基本和创建项目一样,紧接着上一篇创建项目的博客,采用的是在pycharm的Terminal中 步骤: 1.先输入 cd demo 进入到demo目录下 2.再输入 pyth ...

  4. django 模板mysql_59 Django基础三件套 , 模板{{}}语言 , 程序连mysql Django项目app Django中ORM的使用...

    主要内容:https://www.cnblogs.com/liwenzhou/p/8688919.html 1 form表单中提交数据的三要素 a : form标签必须要有action和method的 ...

  5. iOS开发:苹果开发者账号第一次新建APP ID以及创建App的步骤

    在iOS开发过程中,关于苹果开发者账号相关操作的知识点也是不可忽视的,尤其是对于一些刚接触苹果开发的开发者来说,更应该多了解一些关于苹果开发者账号的知识点,这样有利于App的测试和上架. 苹果开发者账 ...

  6. 在虚拟环境安装使用Django新建项目避坑

    1. 复制虚拟环境路径 注意: 首先确保你已经创建了虚拟环境,如果还没有创建虚拟环境请参看不会cd没关系,100%创建虚拟虚拟环境 复制虚拟环境路径是为了后面可以方便的在命令行切换到虚拟环境下 比如我 ...

  7. 【已解决】第一次遇到无法新建APP问题

    公司新注册了全新的开发者账号,拿到手之后按照以往创建证书,描述文件和boundle ID的流程,很熟练的注册了一遍,喜滋滋的去新建App的时候,出错了,

  8. ECSTORE 新建APP应用

    1.用命令新建app // ----- window平台 ----- 直接运行 " 站点根目录/app/base/cmd.bat " 出现命令行后输入 dev:new app my ...

  9. Django创建app遇到的问题

    在windows下使用 python3 manage.py startapp sports发现并不能创建出Django的app 因为python3在windows下不是执行python的命令,应该用 ...

最新文章

  1. godaddy php5.ini,Godaddy主机如何开启GZIP压缩 | Godaddy美国主机中文指南
  2. 如何初始化类的static成员变量?
  3. Spark2.0研究
  4. hdu1247 Hat’s Words
  5. 专访蒋宇捷:技术管理者应具备哪些能力?
  6. java中0l 1_Java基础笔记1 - osc_0ltyoebk的个人空间 - OSCHINA - 中文开源技术交流社区...
  7. Mysql function(函数)
  8. postgresql 查询序列_RazorSQL for Mac(数据库工具查询) v9.0.9
  9. MTK 驱动(63)---MTK TP驱动移植
  10. idea部署web项目到tomcat注意事项
  11. C++ Error C2664:无法将参数 1 从“const char [9]”转换为“LPCWSTR”解决方案
  12. cpci无法检索_CPCI检索是什么意思
  13. convert_variables_to_constants()
  14. 父亲自制药救子的背后
  15. 2015年可视化研究前沿动态
  16. BAT前端老鸟总结:未来几年web前端发展四大趋势前瞻
  17. 11个经典物联网应用电路方案优选合辑
  18. C语言读取和存储bmp格式图片
  19. Deep Learning Hangzhou Meetup--华为2012实验室深度学习国际群 联合举办
  20. 红杉资本推出两支总规模达28.5亿美元的新基金,将扩大Web3领域投资

热门文章

  1. 2021-2027年中国一体化预制泵站行业研究及前瞻分析报告
  2. 2022-2028年中国EMI膜产业发展态势及市场发展策略报告
  3. 十进制转化为二进制java代码_【模板小程序】任意长度十进制数转化为二进制(java实现)...
  4. 2022-2028中国橡胶衬里行业全景调研及竞争格局预测报告
  5. Linux shell 学习笔记(7)— 构建基本脚本(变量、重定向、管道、状态码)
  6. 【转载】首次作品展小结
  7. 深入浅出Redis五种基本数据类型
  8. Python分析离散心率信号(上)
  9. MEMS传感器作为变革的驱动力
  10. 操作系统常用词典(二)