Finish version
This commit is contained in:
parent
9f6fcf447d
commit
4d6f73ac63
@ -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();
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
Loading…
Reference in New Issue
Block a user