Conjunto e11d965 en sapic


Ignorar:
Fecha y hora:
30/10/2017 09:36:35 (hace 7 años)
Autor:
Erwin Paredes <eparedes@…>
Branches:
master, erwin, explicacion_situacional
Children:
fd1bfc1
Parents:
200cce2
Mensaje:

curso_django actualizacion

Fichero:
1 editado

Leyenda

No modificado
Añadido
Eliminado
  • curso_django/curso_django.tex

    rfa1fdaf re11d965  
    4444\begin{block}{Fundación CENDITEL}
    4545\indent   
    46 Somos el Centro Nacional de Desarrollo e Investigación en Tecnologías Libres, cuyas actividades son el desarrollo de proyectos con impacto tecnológico enmarcados en las áeas de Software, Hardware y Telecomunicaciones.
     46Somos el Centro Nacional de Desarrollo e Investigación en Tecnologías Libres, cuyas actividades son el desarrollo de proyectos con impacto tecnológico enmarcados en las áreas de Software, Hardware y Telecomunicaciones.
    4747https://www.cenditel.gob.ve
    4848
     
    639639    def get_initial_queryset(self):
    640640        return self.model.objects.all()
    641 
    642641\end{verbatim}
    643642\end{frame}
     
    716715\begin{frame}[fragile]
    717716\begin{verbatim}
    718 
     717@login_required
     718def change_profile(request):
     719    """ Cambiar perfil de usuario
     720    """
     721    if request.method == 'POST':
     722        user_id = request.POST['user_id']
     723        personal = User.objects.get(user_id=request.user.id)               
     724        personal.first_name = request.POST['fname']
     725        personal.last_name = request.POST['lname']
     726        personal.email = request.POST['email']
     727        personal.is_active = request.POST.get('is_active')
     728        personal.user.save()
     729       
     730        message = _("The profile change was made")
     731        context = {'personal':personal,'message':message,}
     732    template = loader.get_template('personal/profile.html')
     733    return HttpResponse(template.render(context, request))
     734
     735\end{verbatim}
     736\end{frame}
     737
     738\begin{frame}[fragile]
     739\begin{verbatim}
     740@login_required
     741def delete_personal(request):
     742    """ Delete users
     743    """
     744    id = json.loads(request.POST['seleccionados'])
     745    print id
     746 
     747    for id_values in id:
     748        if id_values["id"] != "0":
     749                   
     750            u = User.objects.get(pk=int(id_values["id"]))
     751            u.delete()   
     752           
     753    return redirect('personal')
    719754\end{verbatim}
    720755\end{frame}
     
    723758\begin{frame}[fragile]
    724759\begin{verbatim}
     760####  ListView
     761
     762# En el archivo views.py
     763
     764from django.views.generic.list import ListView
     765from django.utils import timezone
     766
     767from articles.models import Article
     768
     769class ArticleListView(ListView):
     770
     771    model = Article
     772
     773    def get_context_data(self, **kwargs):
     774        context = super(ArticleListView,
     775                        self).get_context_data(**kwargs)
     776        context['now'] = timezone.now()
     777        return context
     778
     779\end{verbatim}
     780\end{frame}
     781
     782\begin{frame}[fragile]
     783\begin{verbatim}
     784
     785# En el archivo urls.py
     786from django.conf.urls import url
     787
     788from article.views import ArticleListView
     789
     790urlpatterns = [
     791 url(r'^$',ArticleListView.as_view(),name='article-list'),
     792]
     793
     794# El template
     795<h1>Articles</h1>
     796<ul>
     797{% for article in object_list %}
     798    <li>
     799    {{ article.pub_date|date }} - {{ article.headline }}
     800    </li>
     801{% empty %}
     802    <li>No articles yet.</li>
     803{% endfor %}
     804</ul>
     805\end{verbatim}
     806\end{frame}
     807
     808\begin{frame}[fragile]
     809\begin{verbatim}
     810#### DetailView
     811
     812# En el archivo views.py
     813
     814from django.views.generic.detail import DetailView
     815from django.utils import timezone
     816
     817from articles.models import Article
     818
     819class ArticleDetailView(DetailView):
     820
     821    model = Article
     822
     823    def get_context_data(self, **kwargs):
     824        context = super(ArticleDetailView, self).
     825                  get_context_data(**kwargs)
     826        context['now'] = timezone.now()
     827        return context
     828       
     829\end{verbatim}
     830\end{frame}
     831
     832\begin{frame}[fragile]
     833\begin{verbatim}
     834
     835# En el archivo urls.py
     836
     837from django.conf.urls import url
     838
     839from article.views import ArticleDetailView
     840
     841urlpatterns = [
     842 url(r'^(?P<slug>[-\w]+)/$',ArticleDetailView.as_view(),
     843                            name='article-detail'),
     844]
     845
     846# El template
     847
     848<h1>{{ object.headline }}</h1>
     849<p>{{ object.content }}</p>
     850<p>Reporter: {{ object.reporter }}</p>
     851<p>Published: {{ object.pub_date|date }}</p>
     852<p>Date: {{ now|date }}</p>
     853\end{verbatim}
     854\end{frame}
     855
     856\begin{frame}[fragile]
     857\begin{verbatim}
     858#### CreateView
     859
     860from django.views.generic.edit import CreateView
     861from myapp.models import Author
     862
     863class AuthorCreate(CreateView):
     864    model = Author
     865    fields = ['name']
     866
     867# En el template
     868
     869<form action="" method="post">{% csrf_token %}
     870    {{ form.as_p }}
     871    <input type="submit" value="Save" />
     872</form>
     873
     874\end{verbatim}
     875\end{frame}
     876
     877\begin{frame}[fragile]
     878\begin{verbatim}
     879#### UpdateView
     880
     881from django.views.generic.edit import UpdateView
     882from myapp.models import Author
     883
     884class AuthorUpdate(UpdateView):
     885    model = Author
     886    fields = ['name']
     887    template_name_suffix = '_update_form'
     888   
     889# En el template
     890
     891<form action="" method="post">{% csrf_token %}
     892    {{ form.as_p }}
     893    <input type="submit" value="Update" />
     894</form>
     895
     896\end{verbatim}
     897\end{frame}
     898
     899\begin{frame}[fragile]
     900\begin{verbatim}
     901#### DeleteView
     902
     903from django.views.generic.edit import DeleteView
     904from django.urls import reverse_lazy
     905from myapp.models import Author
     906
     907class AuthorDelete(DeleteView):
     908    model = Author
     909    success_url = reverse_lazy('author-list')
     910   
     911# En el template
     912
     913<form action="" method="post">{% csrf_token %}
     914    <p>Are you sure you want to delete "{{ object }}"?</p>
     915    <input type="submit" value="Confirm" />
     916</form>
    725917
    726918\end{verbatim}
     
    730922\begin{frame}[fragile]
    731923\begin{verbatim}
    732 
     924Creamos la aplicacion user desde la consola:
     925
     926python manage.py startapp user
     927
     928Editamos el archivo user/views.py:
     929
     930# -*- coding: utf-8 -*-
     931
     932from django.shortcuts import render
     933from django.contrib import messages
     934from django.contrib.auth import (
     935    authenticate, logout, login
     936)
     937from django.contrib.auth.models import (
     938    Group, Permission, User
     939)
     940
     941class LoginView(FormView):
     942    form_class = FormularioLogin
     943    template_name = 'users.login.html'
     944    success_url = '/inicio/'
     945\end{verbatim}
     946\end{frame}
     947
     948\begin{frame}[fragile]
     949\begin{verbatim}
     950def form_valid(self, form):
     951       
     952    usuario = form.cleaned_data['usuario']
     953    contrasena = form.cleaned_data['contrasena']
     954    usuario = authenticate(username=usuario,password=contrasena)
     955       
     956    if usuario is not None:
     957        login(self.request, usuario)
     958        messages.info(self.request,'Bienvenido %s has ingresado\
     959                                    Sistema con el usuario %s \
     960                                    ' % (usuario.first_name,
     961                                         usuario.username))
     962    else:
     963        self.success_url = reverse_lazy('users:login')
     964        messages.warning(self.request,'Verifique su nombre y \
     965                                       contraseña\
     966                                      y vuelve a intertar')
     967
     968    return super(LoginView, self).form_valid(form)
     969 
    733970\end{verbatim}
    734971\end{frame}
     
    737974\begin{frame}[fragile]
    738975\begin{verbatim}
     976#### Crear Permisos desde el shell ejecutar
     977
     978from myapp.models import BlogPost
     979from django.contrib.auth.models import Permission
     980from django.contrib.contenttypes.models import ContentType
     981
     982content_type = ContentType.objects.get_for_model(BlogPost)
     983permission = Permission.objects.create(
     984    codename='can_publish',
     985    name='Can Publish Posts',
     986    content_type=content_type,
     987)
     988
     989\end{verbatim}
     990\end{frame}
     991
     992\begin{frame}[fragile]
     993\begin{verbatim}
     994
     995from django.contrib.auth.models import Permission, User
     996from django.contrib.contenttypes.models import ContentType
     997from django.shortcuts import get_object_or_404
     998
     999from myapp.models import BlogPost
     1000
     1001def user_gains_perms(request, user_id):
     1002    user = get_object_or_404(User, pk=user_id)
     1003    # any permission check will
     1004    #cache the current set of permissions
     1005    user.has_perm('myapp.change_blogpost')
     1006
     1007    content_type=ContentType.objects.get_for_model(BlogPost)
     1008    permission = Permission.objects.get(
     1009        codename='change_blogpost',
     1010        content_type=content_type,
     1011    )
     1012    user.user_permissions.add(permission)
    7391013
    7401014\end{verbatim}
     
    7451019\begin{verbatim}
    7461020
     1021from django.contrib.auth.decorators import
     1022  login_required, permission_required
     1023from django.views.generic import TemplateView
     1024
     1025from .views import VoteView
     1026
     1027urlpatterns = [
     1028    url(r'^about/$', login_required(
     1029           TemplateView.as_view(template_name="secret.html"))),
     1030    url(r'^vote/$', permission_required(
     1031           'polls.can_vote')(VoteView.as_view())),
     1032]
     1033
    7471034\end{verbatim}
    7481035\end{frame}
     
    7511038\begin{frame}[fragile]
    7521039\begin{verbatim}
    753 
     1040def newpassword(request):
     1041    puser = request.POST['puser']
     1042    try:
     1043        user = User.objects.get(username=puser)
     1044        randompass = ''.join([choice(
     1045        '1234567890qwertyuiopasdfghjklzxcvbnm')
     1046        for i in range(10)])
     1047        print randompass
     1048        subject = _('System: New Password')
     1049        message = _('Your password is reset, new password: ')
     1050                    + randompass
     1051        user.email_user("subject","message")
     1052        user.set_password(randompass)
     1053        user.save()
     1054    except:
     1055        print "error send mail"
     1056        mensaje = _("User not found")
     1057    return redirect('/authenticate/signin')
     1058 
    7541059\end{verbatim}
    7551060\end{frame}
     
    7581063\begin{frame}[fragile]
    7591064\begin{verbatim}
    760 
    761 \end{verbatim}
    762 \end{frame}
     1065Otros conceptos
     1066
     1067* Internacionalización
     1068* Zonas Horarias
     1069* Servidor Web
     1070* Geodjango
     1071* Django Rest
     1072
     1073 Entre otros...
     1074
     1075\end{verbatim}
     1076\end{frame}
     1077
     1078\begin{frame}[plain]
     1079
     1080 
     1081      \begin{center}
     1082
     1083        \font\endfont = cmss10 at 15.40mm
     1084        \color{Brown}
     1085        \endfont
     1086        \baselineskip 20.0mm
     1087
     1088        CENDITEL
     1089
     1090      \end{center}   
     1091
     1092   
     1093\end{frame}
     1094
    7631095
    7641096\end{document}
Nota: Vea TracChangeset para ayuda en el uso del visor de conjuntos de cambios.