【问题标题】:django form version 1.3django表单1.3版
【发布时间】:2011-08-02 13:44:51
【问题描述】:

我想让用户在某个页面中提交表单。我的模型是这样的

class Ask(models.Model):
    name = models.CharField(max_length=500)
    designation = models.CharField(max_length=200, blank=True)
    email = models.EmailField()
    phone = models.CharField(max_length=20,  blank=True)
    avatar = models.ImageField(upload_to="/ask/users/avaters", blank=True)
    question = models.CharField(max_length= 1024)
    ques_time = models.DateField()
    answere = models.TextField()
    ans_time = models.DateField()
    display = models.BooleanField()
    asker_ip = models.CharField(max_length=100)

我将收到用户的姓名、职务、电子邮件、电话、头像和问题。 ques_time 和 ans_time 将在那个时间自动更新。答案将由 django 管理员中的站点所有者填写。浏览器ip地址会自动接收asker_ip。

我在模板部分有一个基本模板。当表单提交的用户将重定向到该页面但在表单部分中显示成功消息。顺便说一句,我希望用户上传该头像。

现在我应该如何开始这个话题。如果您可以描述如何开始写作或给我发送一个有用的网址。

【问题讨论】:

  • 我不确定您在问什么,听起来您想要以下内容:用户提交表单,一旦成功提交,您将呈现相同的页面,但显示成功消息而不是表格。是这样吗?
  • 是的,我还需要知道如何在数据库中输入用户提交的数据
  • forms for models 上非常好的文档有什么问题吗?
  • :) 我什么都不懂。但现在看起来有点可以理解了。我正在寻找这样的答案......“这样做,在这里阅读,这样做创建一个文件名,等等。”顺便说一句,我是 python,django 的完整新手

标签: django django-1.3


【解决方案1】:

你可以这样做:

  • 创建一个验证表单like this 的视图:如果有一个POST(所以,用户提交了一个表单),他会创建一个包含所有提交值的表单对象,然后您就可以进行操作了。如果没有 POST 请求,它只会为模板创建一个空表单。两种方式,视图都会向模板返回一个表单。如果表单已提交或为空,则可能使用另一个设置为 True/False 的变量。
  • 在模板中,您可以使用模板标签检查表单是否存在(使用变量),例如:

    {% if form_sent %}

    太棒了!你提交了一些东西

    {% 别的 %} {{ form.as_p }} {% endif %}

类似的东西。这应该涵盖您问题的第一部分。 This 是您正在寻找的文件上传。仔细阅读此页面,如果您遗漏了什么,上传将无法进行(即,我从不记得在表单中包含正确的 mimetype,而且我总是会出错)

【讨论】:

  • 其实我已经在模板里有了表格。我只想在提交表单时保存数据。所以让我明确一点,我将制作一个 form.py 文件。验证视图中的表单,所以我应该说在哪里保存此表单数据?顺便说一句,我阅读了您提供的第一个链接。它在我的头上。 :) 我如何获得用户/表单提交者的 ip 的另一件事?
  • 您在视图中执行保存,然后所有内容都存储在您的后端。例如:表单为您提供了一些有效数据,您将数据存储到 Ask 对象中,然后从视图(您在其中操作数据)中调用 save() 方法,并将对象存储到数据库中。如果您查看我的第一个链接,则可以在 is_valid() 方法调用之后(在该块内)完成保存
猜你喜欢
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 2012-01-21
相关资源
最近更新 更多