Django 表单在 html 模板中不起作用,它只显示按钮
Django form are not working in html template its just show button
我正在尝试在 Django 模板中创建一个表单,但它只是不显示字段。
我的文件:
models.py 我在其中创建了所需的 table
from django.db import models
from django.contrib.auth.models import User
from django.db.models.deletion import CASCADE
STATUS = (
(0,"Draft"),
(1,"Publish")
)
class Post(models.Model):
title = models.CharField(max_length=50)
slug = models.SlugField(max_length=200)
auther = models.ForeignKey(User,on_delete=CASCADE,related_name="blog_posts")
updated_on = models.DateTimeField(auto_now=True)
created_on = models.DateTimeField( auto_now_add=True)
status = models.IntegerField(choices=STATUS,default=0)
body = models.TextField()
def __str__(self):
return self.title
views.py 我在其中为表单创建视图
from post.models import Post
from django.shortcuts import redirect, render
from . forms import PostForm
def post_list(request):
posts = Post.objects.all
form = PostForm(request.POST)
if request.method == "POST":
if form.is_valid():
form.save(commit=False)
form.auther = request.user
form.save()
return redirect("/")
else:
form = PostForm()
context = {
"posts":posts,
"form":form,
}
return render(request,'index.html',context)
forms.py 我创建的表单只编辑 table
中的一个字段
from django import forms
from django.db.models import fields
from django import forms
from . models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields='__all__'
index.html 这是我在 html 模板
中使用表格的方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog App</title>
</head>
<body>
{% for post in posts %}
<div>
<h1>{{post.title}}</h1>
</div>
{{post.body}}
{% endfor %}
<form method="post" action="/">
{% csrf_token %}
{{form}}
<input type="submit" value="save">
</form>
</body>
</html>
您没有向 PostForm 添加任何字段 class:
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields='__all__'
由于您没有字段,因此不会显示任何内容。
class PostForm(forms.ModelForm):
user_name=forms.CharField()
class Meta:
model = Post
fields='__all__'
我正在尝试在 Django 模板中创建一个表单,但它只是不显示字段。 我的文件: models.py 我在其中创建了所需的 table
from django.db import models
from django.contrib.auth.models import User
from django.db.models.deletion import CASCADE
STATUS = (
(0,"Draft"),
(1,"Publish")
)
class Post(models.Model):
title = models.CharField(max_length=50)
slug = models.SlugField(max_length=200)
auther = models.ForeignKey(User,on_delete=CASCADE,related_name="blog_posts")
updated_on = models.DateTimeField(auto_now=True)
created_on = models.DateTimeField( auto_now_add=True)
status = models.IntegerField(choices=STATUS,default=0)
body = models.TextField()
def __str__(self):
return self.title
views.py 我在其中为表单创建视图
from post.models import Post
from django.shortcuts import redirect, render
from . forms import PostForm
def post_list(request):
posts = Post.objects.all
form = PostForm(request.POST)
if request.method == "POST":
if form.is_valid():
form.save(commit=False)
form.auther = request.user
form.save()
return redirect("/")
else:
form = PostForm()
context = {
"posts":posts,
"form":form,
}
return render(request,'index.html',context)
forms.py 我创建的表单只编辑 table
中的一个字段from django import forms
from django.db.models import fields
from django import forms
from . models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields='__all__'
index.html 这是我在 html 模板
中使用表格的方式<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog App</title>
</head>
<body>
{% for post in posts %}
<div>
<h1>{{post.title}}</h1>
</div>
{{post.body}}
{% endfor %}
<form method="post" action="/">
{% csrf_token %}
{{form}}
<input type="submit" value="save">
</form>
</body>
</html>
您没有向 PostForm 添加任何字段 class:
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields='__all__'
由于您没有字段,因此不会显示任何内容。
class PostForm(forms.ModelForm):
user_name=forms.CharField()
class Meta:
model = Post
fields='__all__'