Как вставить входные данные html в базу данных django

я не могу понять, как решить эту проблему.

Я пытаюсь вставить некоторые данные из html формы в небольшую простую базу данных django sqllite, если я прав.

я пытался следовать учебникам и много искал в интернете, но похоже, что я попал в ад учебников.

Мой вопрос: Как я могу добиться того, чтобы данные из текстового поля ввода в html файле попадали в базу данных django.

Вот что у меня есть на данный момент:

HTML:

    <h1>Create a Post </h1>
    <form action="check" method="POST">
    {% csrf_token %}
        artiest: <input type="text" name="artiest"/><br/>
        song: <br/>
        <textarea cols="35" rows="8" name="song">
        </textarea><br/>
        <button type="submit" value="Post"/> </button>
    </form>

views.py

def check(request):

    post=Post()
    post.artiest= request.POST.get('artiest')
    post.song= request.POST.get('song')
    post.save()

    return render(request, 'spotifylist/check.html') 

the models.py

class Post(models.Model):
    artiest = models.CharField(max_length=100)
    song = models.CharField(max_length=100)
    naam = models.CharField(max_length=100)
    link = models.CharField(max_length=100)
    date_posted = models.DateTimeField(auto_now_add=True)

def __str__(self):
    return self.artiest

urls.py:

urlpatterns= [
re_path('^home/', views.home, name = 'spotifylist-home'),
re_path('help/', views.help, name = 'spotifylist-help'),
re_path('check/', views.check, name = 'spotifylist-check'),

]

Итак, что происходит: при отправке страница обновляется и не добавляет данные. которые добавляются на главную страницу в файле views.py:

def home(request):
context = {
    'posts' : Post.objects.all()
}
return render(request,'spotifylist/home.html', context)

Спасибо Тим! за то, что обратил внимание на ошибку action="check". хотя это и не решило мою проблему!

Это было решено благодаря Насеру Фазаль хану.

моя html форма была на главной странице.

поэтому я просто перешел от метода 'check'.

    if request.method == "POST":
    artiest= request.POST.get('artiest')
    song = request.POST.get('song')
    naam = request.POST.get('naam')
    link = request.POST.get('link')

    Post.objects.create(artiest=artiest,song=song,naam=naam,link=link)
return render(request,'spotifylist/home.html', context)

к моему домашнему методу просмотра:

def home(request):
context = {
    'posts' : Post.objects.all()
}
if request.method == "POST":
    artiest= request.POST.get('artiest')
    song = request.POST.get('song')
    naam = request.POST.get('naam')
    link = request.POST.get('link')

    Post.objects.create(artiest=artiest,song=song,naam=naam,link=link)
return render(request,'spotifylist/home.html', context)

и я добавил дополнительную строку в метод

Post.objects.create(artiest=artiest,song=song,naam=naam,link=link)

вот что происходит, когда вы просто слепо следуете учебникам! спасибо всем за усилия.

Вернуться на верх