【问题标题】:Add HTML form values to models in Django将 HTML 表单值添加到 Django 中的模型
【发布时间】:2014-04-26 10:30:12
【问题描述】:

Django 中的新功能,我在将表单数据添加到模型时遇到问题。我无法读取表单值并添加到模型中。我想将用户添加到具有名称和一个主题的模型中。

#models.py
from django.db import models

class User(models.Model):
    name = models.CharField(max_length=80)
    subject = models.CharField(max_length=120)

#views.py
from django.shortcuts import render,render_to_response
from models import User
from django.http import HttpResponseRedirect

def add_user(request):
    if request.method == 'POST':
        f = User(request.POST)
        if f.is_valid():
            name = f.cleaned_data['name']
            subject = f.cleaned_data['subject']
            f.save()
            return HttpResponseRedirect('index.html')
        else:
            f = User()
        return render_to_response('index.html')

    return render(request, 'index.html')

#index.html
<!DOCTYPE html>
<html>
<head>
    <title>Sistemas Web</title>
</head>
<body>
    <div>
        <h1>Add User</h1>
        <form action="add_user" method="POST">{% csrf_token %}
            <label>Name</label><br>
            <input id="name" type="text"><br>
            <input type="radio" id="subject">A<br>
            <input type="radio" id="subject">B<br>
            <input type="submit" value="Enviar">
        </form>
    </div>
</body>
</html>

我们将不胜感激。

【问题讨论】:

    标签: django forms models


    【解决方案1】:

    这里根本没有任何表格。去阅读model forms 上的文档并按照上面的说明进行操作。

    【讨论】:

      【解决方案2】:

      您必须使用request.POST.get() 获取通过url 发送的属性,并发送到
      f = User(request.POST)u = User(name=name, subject=subject) 等模型的属性

      #views.py
      def add_user(request):
          if request.method == 'POST':
              name = request.POST.get('name', '')
              subject = request.POST.get('subject', '')
              u = User(name=name, subject=subject)
              u.save()
              return render(request, 'index.html')
      
          return render(request, 'index.html')
      

      在模板上,您缺少输入标签的名称,没有它就不会发送任何内容。

      #index.html
      <!DOCTYPE html>
      <html>
      <head>
          <title>Sistemas Web</title>
      </head>
      <body>
          <div>
              <h1>Add User</h1>
              <form action="add_user" method="POST">{% csrf_token %}
                  <label>Name</label><br>
                  <input name="name" type="text"><br>
                  <input type="radio" name="subject" value="A">A<br>
                  <input type="radio" name="subject" value="B">B<br>
                  <input type="submit" value="Enviar">
              </form>
      
          </div>
      </body>
      </html>
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2016-06-02
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2011-06-11
        • 2011-10-13
        • 2017-09-01
        • 2015-08-31
        • 2014-08-05
        相关资源
        最近更新 更多