Conjunto e11d965 en sapic
- Fecha y hora:
- 30/10/2017 09:36:35 (hace 7 años)
- Branches:
- master, erwin, explicacion_situacional
- Children:
- fd1bfc1
- Parents:
- 200cce2
- Fichero:
-
- 1 editado
Leyenda
- No modificado
- Añadido
- Eliminado
-
curso_django/curso_django.tex
rfa1fdaf re11d965 44 44 \begin{block}{Fundación CENDITEL} 45 45 \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.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 áreas de Software, Hardware y Telecomunicaciones. 47 47 https://www.cenditel.gob.ve 48 48 … … 639 639 def get_initial_queryset(self): 640 640 return self.model.objects.all() 641 642 641 \end{verbatim} 643 642 \end{frame} … … 716 715 \begin{frame}[fragile] 717 716 \begin{verbatim} 718 717 @login_required 718 def 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 741 def 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') 719 754 \end{verbatim} 720 755 \end{frame} … … 723 758 \begin{frame}[fragile] 724 759 \begin{verbatim} 760 #### ListView 761 762 # En el archivo views.py 763 764 from django.views.generic.list import ListView 765 from django.utils import timezone 766 767 from articles.models import Article 768 769 class 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 786 from django.conf.urls import url 787 788 from article.views import ArticleListView 789 790 urlpatterns = [ 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 814 from django.views.generic.detail import DetailView 815 from django.utils import timezone 816 817 from articles.models import Article 818 819 class 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 837 from django.conf.urls import url 838 839 from article.views import ArticleDetailView 840 841 urlpatterns = [ 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 860 from django.views.generic.edit import CreateView 861 from myapp.models import Author 862 863 class 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 881 from django.views.generic.edit import UpdateView 882 from myapp.models import Author 883 884 class 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 903 from django.views.generic.edit import DeleteView 904 from django.urls import reverse_lazy 905 from myapp.models import Author 906 907 class 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> 725 917 726 918 \end{verbatim} … … 730 922 \begin{frame}[fragile] 731 923 \begin{verbatim} 732 924 Creamos la aplicacion user desde la consola: 925 926 python manage.py startapp user 927 928 Editamos el archivo user/views.py: 929 930 # -*- coding: utf-8 -*- 931 932 from django.shortcuts import render 933 from django.contrib import messages 934 from django.contrib.auth import ( 935 authenticate, logout, login 936 ) 937 from django.contrib.auth.models import ( 938 Group, Permission, User 939 ) 940 941 class 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} 950 def 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 733 970 \end{verbatim} 734 971 \end{frame} … … 737 974 \begin{frame}[fragile] 738 975 \begin{verbatim} 976 #### Crear Permisos desde el shell ejecutar 977 978 from myapp.models import BlogPost 979 from django.contrib.auth.models import Permission 980 from django.contrib.contenttypes.models import ContentType 981 982 content_type = ContentType.objects.get_for_model(BlogPost) 983 permission = 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 995 from django.contrib.auth.models import Permission, User 996 from django.contrib.contenttypes.models import ContentType 997 from django.shortcuts import get_object_or_404 998 999 from myapp.models import BlogPost 1000 1001 def 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) 739 1013 740 1014 \end{verbatim} … … 745 1019 \begin{verbatim} 746 1020 1021 from django.contrib.auth.decorators import 1022 login_required, permission_required 1023 from django.views.generic import TemplateView 1024 1025 from .views import VoteView 1026 1027 urlpatterns = [ 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 747 1034 \end{verbatim} 748 1035 \end{frame} … … 751 1038 \begin{frame}[fragile] 752 1039 \begin{verbatim} 753 1040 def 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 754 1059 \end{verbatim} 755 1060 \end{frame} … … 758 1063 \begin{frame}[fragile] 759 1064 \begin{verbatim} 760 761 \end{verbatim} 762 \end{frame} 1065 Otros 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 763 1095 764 1096 \end{document}
Nota: Vea TracChangeset
para ayuda en el uso del visor de conjuntos de cambios.