Finish version
This commit is contained in:
		| @@ -5,5 +5,5 @@ from rest_framework import serializers | ||||
| class NewsSerializer(serializers.HyperlinkedModelSerializer): | ||||
|     class Meta: | ||||
|         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 app.api.serializers import NewsSerializer | ||||
| from rest_framework.response import Response | ||||
| import json | ||||
|  | ||||
|  | ||||
| class NewsViewSet( mixins.UpdateModelMixin, | ||||
| @@ -19,11 +20,11 @@ class NewsViewSet( mixins.UpdateModelMixin, | ||||
|         return Response(serializer.data) | ||||
|  | ||||
|  | ||||
|     def put(self, request, pk=None): | ||||
|     def put(self, request): | ||||
|         # 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.save() | ||||
|         # Devolvemos la noticia modificada | ||||
|         serializer = News(my_news) | ||||
|         serializer = NewsSerializer(my_news) | ||||
|         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> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|     <meta charset="UTF-8"> | ||||
|     <title>Title</title> | ||||
| </head> | ||||
| <body> | ||||
|  | ||||
| </body> | ||||
| </html> | ||||
| {% extends 'layouts/base.html' %} | ||||
| {% block title %}Añadir nueva noticia{% endblock %} | ||||
| {% block main %} | ||||
| <form novalidate method="post"> | ||||
|     {% csrf_token %} | ||||
|     {{ news_form.as_p }} | ||||
|     <p> | ||||
|         <input type="submit" value="Guardar"> | ||||
|     </p> | ||||
| </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): | ||||
| @@ -6,4 +8,19 @@ def home(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) => { | ||||
|                 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