我正在开发一个人们可以购买服务的网站,它还有一个通知系统,我在视图中执行此操作以显示登录和注册 index.html
Views.py
from django.middleware.csrf import get_token
from app.models import *
from app.forms import *
from django.shortcuts import render, render_to_response
from django.http import HttpRequest
from django.template import RequestContext
from datetime import datetime
from ajaxuploader.views import AjaxFileUploader
from django.contrib.auth import logout as auth_logout
from django.contrib.auth import login as auth_login
from django.template.context_processors import csrf
from django.template.defaulttags import csrf_token
def index(request):
if request.method == 'POST':
form = RegistroUserForm(request.POST, request.FILES)
else:
form = RegistroUserForm()
context = {
'form': form
}
notifi = Notificaciones.objects.all()
return render(request,'app/index.html',context)
def registro_usuario_view(request):
if request.method == 'POST':
# Si el method es post, obtenemos los datos del formulario
form = RegistroUserForm(request.POST, request.FILES)
# Comprobamos si el formulario es valido
if form.is_valid():
# En caso de ser valido, obtenemos los datos del formulario.
# form.cleaned_data obtiene los datos limpios y los pone en un
# diccionario con pares clave/valor, donde clave es el nombre del campo
# del formulario y el valor es el valor si existe.
cleaned_data = form.cleaned_data
username = cleaned_data.get('username')
password = cleaned_data.get('password')
email = cleaned_data.get('email')
# E instanciamos un objeto User, con el username y password
user_model = User.objects.create_user(username=username, password=password)
# Añadimos el email
user_model.email = email
# Y guardamos el objeto, esto guardara los datos en la db.
user_model.save()
# Ahora, creamos un objeto UserProfile, aunque no haya incluido
# una imagen, ya quedara la referencia creada en la db.
user_profile = UserProfile()
# Al campo user le asignamos el objeto user_model
user_profile.user = user_model
# Por ultimo, guardamos tambien el objeto UserProfile
user_profile.save()
else:
# Si el mthod es GET, instanciamos un objeto RegistroUserForm vacio
form = RegistroUserForm()
# Creamos el contexto
context = {'form': form}
# Y mostramos los datos
return render(request, 'app/registro.html', context)
Forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import AuthenticationForm
from .models import *
from multiupload.fields import MultiFileField
from django.utils.translation import ugettext_lazy as _
class UploadForm(forms.Form):
images = MultiFileField(min_num=1, max_num=100, max_file_size=1024*1024*5)
class RegistroUserForm(forms.Form):
username = forms.CharField(min_length=5,widget=forms.TextInput(attrs={'class': 'form-control'}))
email = forms.EmailField(widget=forms.EmailInput(attrs={'class': 'form-control'}))
password = forms.CharField(min_length=5,widget=forms.PasswordInput(attrs={'class': 'form-control'}))
password2 = forms.CharField(min_length=5,widget=forms.PasswordInput(attrs={'class': 'form-control'}))
def clean_username(self):
"""Comprueba que no exista un username igual en la db"""
username = self.cleaned_data['username']
if User.objects.filter(username=username):
raise forms.ValidationError('Nombre de usuario ya registrado.')
return username
def clean_email(self):
"""Comprueba que no exista un email igual en la db"""
email = self.cleaned_data['email']
if User.objects.filter(email=email):
raise forms.ValidationError('Este E-mail ya se encuentra registrado.')
return email
def clean_password2(self):
"""Comprueba que password y password2 sean iguales."""
password = self.cleaned_data['password']
password2 = self.cleaned_data['password2']
if password != password2:
raise forms.ValidationError('Las contraseñas no coinciden.')
return password2
Models.py
class UserProfile(models.Model):
Usuario = models.OneToOneField(settings.AUTH_USER_MODEL)
email = models.EmailField(blank=True,null=True)
Cargo_Contacto = models.CharField("Cargo del cliente",max_length=50,null=True)
Celular = models.PositiveIntegerField("Numero de celular",null=True)
Pagina_web = models.URLField("Pagina Web",blank=True)
Numero_de_identificacion = models.PositiveIntegerField("Numero de identificacion",null=True)
Nombre_Empresa = models.CharField("Nombre de la empresa",max_length=50,null=True)
Telefono = models.PositiveIntegerField("Numero de telefono",null=True)
Extension_Telefono = models.PositiveIntegerField("Extension del telefono",null=True)
GeneroEscoger = ((1,"Sin especificar"),(2,'Masculino'),(3,'Femenino'))
Genero = models.IntegerField(choices=GeneroEscoger, default=1)
Ciudades = ( (1,'Bogotá'),(2,'Medellin'),(3,'Cali'),(4,'Barranquilla'),(5,'Cartagena'),(6,'Cucuta'),(7,'Ibagué'),(8,'Bucaramanga'),(9,'Otro'))
Ciudad = models.IntegerField('Ciudad',choices=Ciudades, default=1,)
class Meta:
verbose_name = 'Cliente'
verbose_name_plural = 'Clientes'
def __str__(self):
return self.Usuario.username
class Notificaciones(models.Model):
IDcliente = models.ManyToManyField(User)
Tipo_de_notificaciones = ( (1,'Ofertas'),(2,'Error'),(3,'Informacion'))
Tipo = models.IntegerField('Tipo de notificacion',choices=Tipo_de_notificaciones, default=3,)
Nombre_not = models.CharField("Nombre de la notifiacion",max_length=50)
Descripcion_not = HTMLField("Descripcion de la notificacion")
Imagen_not = models.ImageField("Imagen de la notificacion",upload_to="notificaciones")
Fecha_Caducidad_notificacion = models.DateTimeField("Fecha de caducidad de la notificacion",auto_now_add=False)
Estado = models.BooleanField("Estado de la notificacion", default=False)
class Meta:
verbose_name = 'Notificacion'
verbose_name_plural = 'Notificaciones'
def __str__(self):
return self.Nombre_not
这里是 的 urls.py
url(r'^tinymce/', include('tinymce.urls')),
url('', include('django.contrib.auth.urls', namespace='auth')),
url(r'^social/',include('social.apps.django_app.urls', namespace='social')),
#url(r'^s$', 'app.views.CategoriaProductoss', name='servicios'),
#url(r'^s/(?P<id>\d+)$', 'app.views.servicioscategoria', name='servicioscategoria'),
url(r'^media/(?P<path>.*)$','django.views.static.serve', {'document_root':settings.MEDIA_ROOT,}),
url(r'^$', 'app.views.index', name='Vulpini.co'),
url(r'^login$', 'django.contrib.auth.views.login', name='Vulpini.co'),
url(r'^logout$','django.contrib.auth.views.logout_then_login',{'template_name': 'app/registration/login.html',},name='logout'),
url(r'start$', 'app.views.start', name="start"),
url(r'ajax-upload$', 'app.views.import_uploader', name="my_ajax_upload"),
url(r'^registro$', 'app.views.index', name='registro'),
我正在考虑这个应用程序,因为,我在Python和Django上真的很新,想知道是否有人可以让我对它进行一些推荐,这个想法就像Godaddy,人们购买服务和通知系统之类的Youtube或Google通知 我的问题这是错的还是对的? 有人可以帮助我 非常感谢