Finish version
This commit is contained in:
		| @@ -5,5 +5,5 @@ from rest_framework import serializers | |||||||
| class NewsSerializer(serializers.HyperlinkedModelSerializer): | class NewsSerializer(serializers.HyperlinkedModelSerializer): | ||||||
|     class Meta: |     class Meta: | ||||||
|         model = News |         model = News | ||||||
|         fields = ['title', 'url', 'votes', 'created'] |         fields = ['id', 'title', 'url', 'votes', 'created'] | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ from app.api.models import News | |||||||
| from rest_framework import viewsets, mixins | from rest_framework import viewsets, mixins | ||||||
| from app.api.serializers import NewsSerializer | from app.api.serializers import NewsSerializer | ||||||
| from rest_framework.response import Response | from rest_framework.response import Response | ||||||
|  | import json | ||||||
|  |  | ||||||
|  |  | ||||||
| class NewsViewSet( mixins.UpdateModelMixin, | class NewsViewSet( mixins.UpdateModelMixin, | ||||||
| @@ -19,11 +20,11 @@ class NewsViewSet( mixins.UpdateModelMixin, | |||||||
|         return Response(serializer.data) |         return Response(serializer.data) | ||||||
|  |  | ||||||
|  |  | ||||||
|     def put(self, request, pk=None): |     def put(self, request): | ||||||
|         # Update |         # Update | ||||||
|         my_news = News.objects.get(pk) |         my_news = News.objects.get(pk=request.data['id']) | ||||||
|         my_news.votes = my_news.votes + 1 |         my_news.votes = my_news.votes + 1 | ||||||
|         my_news.save() |         my_news.save() | ||||||
|         # Devolvemos la noticia modificada |         # Devolvemos la noticia modificada | ||||||
|         serializer = News(my_news) |         serializer = NewsSerializer(my_news) | ||||||
|         return Response(serializer.data) |         return Response(serializer.data) | ||||||
							
								
								
									
										11
									
								
								app/web/forms.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								app/web/forms.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | |||||||
|  | from django import forms | ||||||
|  |  | ||||||
|  | class NewsForm(forms.Form): | ||||||
|  |     title = forms.CharField( | ||||||
|  |         label='Titulo', | ||||||
|  |         required=True | ||||||
|  |     ) | ||||||
|  |     url = forms.URLField( | ||||||
|  |         label='Ruta', | ||||||
|  |         required=True | ||||||
|  |     ) | ||||||
| @@ -1,10 +1,11 @@ | |||||||
| <!DOCTYPE html> | {% extends 'layouts/base.html' %} | ||||||
| <html lang="en"> | {% block title %}Añadir nueva noticia{% endblock %} | ||||||
| <head> | {% block main %} | ||||||
|     <meta charset="UTF-8"> | <form novalidate method="post"> | ||||||
|     <title>Title</title> |     {% csrf_token %} | ||||||
| </head> |     {{ news_form.as_p }} | ||||||
| <body> |     <p> | ||||||
|  |         <input type="submit" value="Guardar"> | ||||||
| </body> |     </p> | ||||||
| </html> | </form> | ||||||
|  | {% endblock %} | ||||||
| @@ -1,4 +1,6 @@ | |||||||
| from django.shortcuts import render | from django.shortcuts import render, redirect, reverse | ||||||
|  | from app.api.models import News | ||||||
|  | from app.web.forms import NewsForm | ||||||
|  |  | ||||||
|  |  | ||||||
| def home(request): | def home(request): | ||||||
| @@ -6,4 +8,19 @@ def home(request): | |||||||
|  |  | ||||||
|  |  | ||||||
| def add_news(request): | def add_news(request): | ||||||
|     return render(request, 'pages/add-news.html', {}) |     mi_form = NewsForm() | ||||||
|  |     # Validamos el formulario | ||||||
|  |     if request.method == 'POST': | ||||||
|  |         mi_form = NewsForm(request.POST) | ||||||
|  |         # Muestro los errores | ||||||
|  |         if mi_form.is_valid(): | ||||||
|  |             # Guardo | ||||||
|  |             mi_new_news = News() | ||||||
|  |             mi_new_news.title = mi_form.cleaned_data.get('title') | ||||||
|  |             mi_new_news.url = mi_form.cleaned_data.get('url') | ||||||
|  |             mi_new_news.save() | ||||||
|  |             # Redirecciono a Home | ||||||
|  |             return redirect(reverse('list')) | ||||||
|  |     return render(request, 'pages/add-news.html', { | ||||||
|  |         'news_form': mi_form | ||||||
|  |     }) | ||||||
							
								
								
									
										
											BIN
										
									
								
								db.sqlite3
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								db.sqlite3
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -16,6 +16,18 @@ new Vue({ | |||||||
|             .then((json) => { |             .then((json) => { | ||||||
|                 this.news = json; |                 this.news = json; | ||||||
|             }); |             }); | ||||||
|       } |       }, | ||||||
|  |         votar: function (id) { | ||||||
|  |             fetch('/api/v1/news/', { | ||||||
|  |                 headers: { | ||||||
|  |                     'Content-type': 'application/json' | ||||||
|  |                 }, | ||||||
|  |                 method: 'PUT', | ||||||
|  |                 body: JSON.stringify({ id: id }) | ||||||
|  |             }) | ||||||
|  |             .then((json) => { | ||||||
|  |                 this.getNews(); | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| }) | }) | ||||||
		Reference in New Issue
	
	Block a user