gpt4 book ai didi

python - Django 1.11 : post form data to database

转载 作者:行者123 更新时间:2023-11-28 21:41:32 25 4
gpt4 key购买 nike

我正在制作一个超简约的博客应用程序作为第一个项目。我无法让我的表单的 CharField 显示在页面上,而且我无法找到关于如何将该表单数据放入我的数据库的简明解释。

为清楚起见进行编辑:我正在努力使任何人都可以发布内容,而不仅仅是像官方教程中那样具有管理员权限的人。

表单.py:

  1 from django import forms                                                                                        
2
3 class ContentForm(forms.Form):
4 form_post = forms.CharField(widget = forms.TextInput)

views.py:

  1 from django.shortcuts import render                                                                             
2 from django.http import HttpResponse
3 from .forms import ContentForm
4 from .models import Post
5
6 def post(request ):
7 #testvar = "TEST VARIABLE PLZ IGNORE"
8 post_list = Post.objects.order_by('id')
9
10 return render(request, 'posts/main.html',
11 {'post': post_list},
12 )
13
14 def content_get(request):
15
16 if request.method == 'POST':
17
18 form = ContentForm(request.POST)
19
20 return render(request, 'main.html', {'form':form})

main.html:

  1 <head>                                                                           
2 <h1>Nanoblogga</h1>
3
4 </head>
5
6 <body>
7 {% for i in post %}
8 <li>{{ i }}</li>
9 {% endfor %}
10
11
12 <form action = '/' method = 'post'>
13 {% csrf_token %}
14 {{ form }}
15 <input type = 'submit' value = 'Submit' />
16 </form>
17 </body>

模型.py

from django.db import models

class Post(models.Model):
content = models.CharField(max_length = 200)

def __str__(self):
return self.content

非常感谢您的意见。

最佳答案

根据你的代码,有很多地方需要修改:

forms.py:您需要 ModelForm 才能使用模型 Post

from django.forms import ModelForm
from .models import Post
class ContentForm(ModelForm):
class Meta:
model = Post
fields = "__all__"

views.py:您必须将 form 传递给模板,以便它可以显示在您的 main html 中,并调用 form.save() 将数据保存到数据库中。

from django.shortcuts import render, redirect                                                                             
from django.http import HttpResponse
from .forms import ContentForm
from .models import Post

def post(request ):
post_list = Post.objects.order_by('id')
form = ContentForm()
return render(request, 'posts/main.html',
{'post': post_list,
'form':form},
)
def content_get(request):
if request.method == 'POST':
form=ContentForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')

假设您有这样的 urls.py 应用:

from django.conf.urls import url

from . import views

app_name = 'post'

urlpatterns = [
url(r'^$', views.post, name='main'),
url(r'^content$', views.content_get, name='content_get'),
]

最后在ma​​in.html中,您需要定义要发布的action:

<html>
<head>
<h1>Nanoblogga</h1>
</head>
<body>
{% for i in post %}
<li>{{ i }}</li>
{% endfor %}

<form action = '/content' method ='post'>
{% csrf_token %}
{{ form }}
<input type = 'submit' value = 'Submit' />
</form>
</body>
</html>

关于python - Django 1.11 : post form data to database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44712022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com