十四 Django 1.5.4 用户注册
来源:互联网 发布:域名交易骗局 编辑:程序博客网 时间:2024/04/29 10:12
一.forms.py
from django import formsfrom django.contrib.auth.models import Userclass ContactForm(forms.Form): Email = forms.EmailField(widget=forms.TextInput()) Titulo = forms.CharField(widget=forms.TextInput()) Texto = forms.CharField(widget=forms.Textarea())class LoginForm(forms.Form): username = forms.CharField(widget=forms.TextInput()) password = forms.CharField(widget=forms.PasswordInput(render_value=False))class RegisterForm(forms.Form): username = forms.CharField(label="Nombre de Usuario",widget=forms.TextInput()) email = forms.EmailField(label="Correo Electronico",widget=forms.TextInput()) password_one = forms.CharField(label="Password",widget=forms.PasswordInput(render_value=False)) password_two = forms.CharField(label="Confirmar password",widget=forms.PasswordInput(render_value=False)) def clean_username(self): username = self.cleaned_data['username'] try: u = User.objects.get(username=username) except User.DoesNotExist: return username raise forms.ValidationError('Nombre de usuario ya existe') def clean_email(self): email = self.cleaned_data['email'] try: u = User.objects.get(email=email) except User.DoesNotExist: return email raise forms.ValidationError('Email ya registrado') def clean_password_two(self): password_one = self.cleaned_data['password_one'] password_two = self.cleaned_data['password_two'] if password_one == password_two: pass else: raise forms.ValidationError('Password no coinciden')
二.urls.py
from django.conf.urls.defaults import patterns,urlurlpatterns = patterns('demo.apps.home.views', url(r'^$','index_view',name='vista_principal'), url(r'^about/$','about_view',name='vista_about'), url(r'^productos/page/(?P<pagina>.*)/$','productos_view',name='vista_productos'), url(r'^producto/(?P<id_prod>.*)/$','singleProduct_view',name='vista_single_producto'), url(r'^contacto/$','contacto_view',name='vista_contacto'), url(r'^login/$','login_view',name='vista_login'), url(r'^registro/$','register_view',name='vista_registro'), url(r'^logout/$','logout_view',name='vista_logout'),)
三.views.py
from django.shortcuts import render_to_responsefrom django.template import RequestContextfrom demo.apps.ventas.models import productofrom demo.apps.home.forms import ContactForm, LoginForm,RegisterFormfrom django.core.mail import EmailMultiAlternatives # Enviamos HTMLfrom django.contrib.auth.models import Userfrom django.contrib.auth import login,logout,authenticatefrom django.http import HttpResponseRedirect# Paginacion en Djangofrom django.core.paginator import Paginator,EmptyPage,InvalidPagedef index_view(request): return render_to_response('home/index.html',context_instance=RequestContext(request))def about_view(request): mensaje = "Esto es un mensaje desde mi vista" ctx = {'msg':mensaje} return render_to_response('home/about.html',ctx,context_instance=RequestContext(request))def productos_view(request,pagina): lista_prod = producto.objects.filter(status=True) # Select * from ventas_productos where status = True paginator = Paginator(lista_prod,5) # Cuantos productos quieres por pagina? = 3 try: page = int(pagina) except: page = 1 try: productos = paginator.page(page) except (EmptyPage,InvalidPage): productos = paginator.page(paginator.num_pages) ctx = {'productos':productos} return render_to_response('home/productos.html',ctx,context_instance=RequestContext(request))def singleProduct_view(request,id_prod): prod = producto.objects.get(id=id_prod) cats = prod.categorias.all() # Obteniendo las categorias del producto encontrado ctx = {'producto':prod,'categorias':cats} return render_to_response('home/SingleProducto.html',ctx,context_instance=RequestContext(request))def contacto_view(request): info_enviado = False # Definir si se envio la informacion o no se envio email = "" titulo = "" texto = "" if request.method == "POST": formulario = ContactForm(request.POST) if formulario.is_valid(): info_enviado = True email = formulario.cleaned_data['Email'] titulo = formulario.cleaned_data['Titulo'] texto = formulario.cleaned_data['Texto'] # Configuracion enviando mensaje via GMAIL to_admin = 'alexexc2@gmail.com' html_content = "Informacion recibida de [%s] <br><br><br>***Mensaje****<br><br>%s"%(email,texto) msg = EmailMultiAlternatives('Correo de Contacto',html_content,'from@server.com',[to_admin]) msg.attach_alternative(html_content,'text/html') # Definimos el contenido como HTML msg.send() # Enviamos en correo else: formulario = ContactForm() ctx = {'form':formulario,'email':email,'titulo':titulo,'texto':texto,'info_enviado':info_enviado} return render_to_response('home/contacto.html',ctx,context_instance=RequestContext(request))def login_view(request): mensaje = "" if request.user.is_authenticated(): return HttpResponseRedirect('/') else: if request.method == "POST": form = LoginForm(request.POST) if form.is_valid(): username = form.cleaned_data['username'] password = form.cleaned_data['password'] usuario = authenticate(username=username,password=password) if usuario is not None and usuario.is_active: login(request,usuario) return HttpResponseRedirect('/') else: mensaje = "usuario y/o password incorrecto" form = LoginForm() ctx = {'form':form,'mensaje':mensaje} return render_to_response('home/login.html',ctx,context_instance=RequestContext(request))def logout_view(request): logout(request) return HttpResponseRedirect('/')def register_view(request): form = RegisterForm() if request.method == "POST": form = RegisterForm(request.POST) if form.is_valid(): usuario = form.cleaned_data['username'] email = form.cleaned_data['email'] password_one = form.cleaned_data['password_one'] password_two = form.cleaned_data['password_two'] u = User.objects.create_user(username=usuario,email=email,password=password_one) u.save() # Guardar el objeto return render_to_response('home/thanks_register.html',context_instance=RequestContext(request)) else: ctx = {'form':form} return render_to_response('home/register.html',ctx,context_instance=RequestContext(request)) ctx = {'form':form} return render_to_response('home/register.html',ctx,context_instance=RequestContext(request))
login.html
{% extends "base.html" %}{% block title %} Login {% endblock %}{% block content %}<form action="." method="POST"> {% csrf_token %} {{ mensaje }} {{ form.as_p }} <button class="btn btn-primary" type="submit"> Login </button> <h5>Registrarte <a href="/registro/">aquí</a></h5></form>{% endblock %}
register.html
{% extends "base.html" %}{% block title %} Registro {% endblock %}{% block content %}<form action="." method="POST"> {% csrf_token %} {{ form.as_p }} <button class="btn btn-primary" type="submit"> Registrar </button></form>{% endblock %}
thanks_register.html
{% extends "base.html" %}{% block title %} Registro {% endblock %}{% block content %}<h2> Gracias por registrarte!!! </h2><a href="/login/" class="btn btn-primary"> Iniciar Sesion </a>{% endblock %}
- 十四 Django 1.5.4 用户注册
- django注册用户
- django 用户注册系统
- django用户注册
- Django 添加用户注册功能
- Django会话、用户和注册
- python django 用户注册验证登录。。。
- Django Token验证用户注册邮箱验证
- Django 用户系统 注册 校验 登陆
- Django建教育平台(八)--用户注册
- Django 介绍、安装配置、基本使用、Django 用户注册例子
- django用户注册、登录、注销和用户扩展
- django开发(3)-用户登录注册和认证
- 【django 学习笔记】13-会话、用户和注册
- Django笔记教程:四、会话、注册、以及用户
- Django用户登录与注册——小白教程
- Django笔记---用户注册和登录验证(1)--Post请求
- Django笔记---用户注册和登录验证(2)--数据库储存
- 关于并发与并行!
- 位移运算符
- Smooks结构化事件流处理
- 代码逻辑大问题
- gdb 查看所有线程的栈
- 十四 Django 1.5.4 用户注册
- HashMap Hashtable LinkedHashMap 和TreeMap
- [教程] 五分钟了解Mecanim角色动画系统
- ubuntu下安装配置ReviewBoard
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- GEA平台部署Iaas
- 改善程序代码质量的一些技巧
- linux环境下,C++性能测试工具 gprof+gprof2dot 研究
- jquerymobile 实用技巧总结 [转]