而不是整个表单我只是看到提交按钮而不是表单字段
目标:获取表单字段以加载并能够提交表单。
views.py 文件
from django.shortcuts import render
from django.template.response import TemplateResponse
from django.views import generic
from friendsbook.models import Status,User
from django.views.generic.edit import CreateView
from .forms import CreatePost
class IndexView(generic.ListView):
template_name='uposts/home.html'
context_object_name='status_object'
def get_queryset(self):
return Status.objects.all()
class post_detail(generic.DetailView):
model=Status
context_object_name='user_profile'
template_name='uposts/detail.html'
def get_queryset(self):
abc=Status.objects.all()
return abc;
def create_post(request):
form=CreatePost()
return render(request,"uposts/createpost.html",{'form':form})
forms.py 文件
from django import forms
from friendsbook.models import Status
class CreatePost(forms.Form):
class meta:
model=Status
fields = ("title","username" )
指定文件夹内的createpost.html 文件
{% extends "friendsbook/structure.html" %}
{% block content %}
<form action="" method="post">{%csrf_token %}
{{ form.as_table }}
<input type="submit" value="Save">
</form>
{% endblock %}
我也尝试使用python shell,但它没用。 看看它给我空字符串而不是表单字段。
请帮帮我。
答案 0 :(得分:1)
这里有几个错误。
首先,要从模型中创建字段,您的表单需要继承forms.ModelForm
,而不是forms.Form
。
其次,内部类需要调用Meta
,而不是meta
。
答案 1 :(得分:1)
由于您未使用ModelForm
,因此需要定义field
。你可以摆脱model = Status
声明。
试试这个:
from django import forms
class CreatePost(forms.Form):
title = forms.CharField()
username = forms.CharField()
class meta:
fields = ("title","username" )
由于它不是ModelForm
,form
不知道Status
模型中有哪些字段。并且它无法实例化字段(因为它们未定义)。
我认为你可能想要使用ModelForm
,除非有一些令人信服的理由不这样做。