Как сделать хороший пост по форме с Django - PullRequest
0 голосов
/ 27 февраля 2019

Я использую Django 2.1.5

Я пытаюсь опубликовать сообщение в моей форме и добавить элемент в базу данных sqlite, но он не работает.

Вот моя ошибкакогда я пытаюсь добавить элемент:

Request Method: POST
Request URL:    http://127.0.0.1:8080/addBill/
Django Version: 2.1.5
Exception Type: ValueError
Exception Value:    
invalid literal for int() with base 10: 'thetest'
Exception Location: C:\Users\fg\AppData\Local\Continuum\anaconda3\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 965

: Вот мой код:

facture.html

<body>
<h1> this is the bills template </h1>


<ul>
    {% for all_items in all_items %}
        <li> {{all_items.content}}</li>
    {% endfor %}
</ul>

<form action="/addBill/" method="post" >{% csrf_token %}
    <input type="text" name="content">
    <input type="submit" value="Add">
</form>

</body>

model.py

class Facture(models.Model):
    content = models.TextField()

views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .models import Facture

# Create your views here.

def myView(request):
    all_bill_items=Facture.objects.all()
    return render(request,'facture.html',{
        'all_items':all_bill_items
        })



def addBill(request):
    #create and item
    #save
    #redirect the user
    new_item=Facture(request.POST['content'])
    new_item.save()
    return HttpResponseRedirect('/Home/')

urls.py

from django.contrib import admin
from django.urls import path
from facture.views import myView,addBill

urlpatterns = [
    path('admin/', admin.site.urls),
    path('Home/', myView),
    path('addBill/', addBill),
]

1 Ответ

0 голосов
/ 28 февраля 2019

Вы должны всегда использовать ключевые аргументы при создании экземпляров моделей.

new_item=Facture(content=request.POST['content'])

Обратите внимание, что вы действительно должны использовать форму здесь.

...