python - Django 模型表单未生成预期的 HTML

标签 python django file forms upload

我有一个模型表单,它不生成(应该)代表模型字段的(部分)HTML。正如您从底部的输出中看到的那样,它只是在应该输出标题的地方输出一个空行,并且大概是文件字段的浏览按钮(或其他东西 - 对吧?)。

#views.py
def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
    else:
        form = UploadFileForm()
    return render_to_response('files/upload_file.html', { 'form': form })

#models.py
from django import forms
from django.db import models
from django.forms import ModelForm

class UploadFile(models.Model):
    title = forms.CharField(max_length = 50)
    theFile = forms.FileField()

    def __unicode__(self):
        return str(title)

class UploadFileForm(ModelForm):
    class Meta:
        model = UploadFile

#upload_file.html
<form action="" method="POST" enctype="multipart/form-data">
    {{ form }}
    <input type="submit" value="Upload File">
</form>

#The HTML output
<form action="" method="POST" enctype="multipart/form-data">

    <input type="submit" value="Upload File">
</form>

最佳答案

实际上转念一想,您的错误在于声明您的模型 UploadFile(由于缺乏响应而进行了双重检查)。您应该使用 models.CharField 而不是 forms.CharField。因此,您的模型没有任何内容;因此 ModelForm 没有任何字段(它不会作为错误出现,以防某些高级用户想要将您最终想要使用的表单字段附加到模型中)。您还需要为 FileField 提供一个 upload_to 位置,主要是您的媒体目录。

class UploadFile(models.Model):
    title = models.CharField(max_length = 50)
    theFile = models.FileField(upload_to="files/")

    def __unicode__(self):
        return str(title)

关于python - Django 模型表单未生成预期的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4340202/

相关文章:

python - 选择要在 Django 中使用的正确设置文件

Android append 文本文件

java - 如何在Java中删除.dat文件?

python - 使用颜色图在 mplot 3D 中表示 4D 数据

python - 在 python 模块中测试示例代码

python - 使用 python 在 Gmail 中发送邮件

c - 如何检查打开的文件是处于读取模式还是写入模式?

python - 向后移植函数修饰符到 python2.1

django - 如何过滤模板标签?

python - 玩家和奖品的正确模型关系?