【问题标题】:Django - HTML template form does not pass content to django viewDjango - HTML 模板表单不将内容传递给 Django 视图
【发布时间】:2018-08-30 09:12:25
【问题描述】:

我正在尝试制作一个 Django 应用程序,但我遇到了一个问题,即模板没有将其内容传递给查看。

这是我的表格..

  <form action="{% url 'view-job' %}" method="post" enctype=application/x-www-form-urlencoded>
{% csrf_token %}
<div>
  <label for="name">Job name: </label>
  <input type="text" id="name" />
</div>
<div>
  <label for="owner">Owner: </label>
  <input type="text" id="owner" />
</div>
...

这是我的帖子处理视图 (views_job.py)

def job(request, pk=None):
if request.method == 'GET':
    return get(request, pk)

elif request.method == 'POST':
    return post(request)
   ...

并发布(请求)

def post(request):
    #data = json.loads(request.body.decode("utf-8"))
    #data = load_json(request)
    new_job = create_new_job(request)
    #new_job = create_new_job(request)
    if new_job != False:
        return new_job
    else:
        return HttpResponse(status=500)

create_new_job(req)

def create_new_job(req):
    config = parse_config()

    try:
        queryset = Job.objects.create(
            name=req.POST.get('name'),
            owner=req.POST.get('owner'),
            execute_date=req.POST.get('execute_date'),
            created_date=timezone.now(),
            master=req.POST.get('master') if 'master' in req.POST != None else config[DEFAULT][MASTER],
            deploy_mode=req.POST.get('deploy_mode') if 'deploy_mode' in req.POST != None else config[DEFAULT][DEPLOY_MODE],
            conf=req.POST.get('conf'),
            classpath=req.POST.get('classpath'),
            app_arguments=req.POST.get('app_arguments'),
            user_params=req.POST.get('user_params'),
            status=READY,
        )
        #queryset.save()
    except:
        print("Error")
        print(req.POST.get('name'))
        return False

    return render(req, 'jobUI/job_details.html',
                    {
                        #'job':queryset
                    }
                )

控制台打印

INFO 2018-03-21 18:48:29,033 basehttp 1321 140106696156928 "GET /jobUI/job/ HTTP/1.1" 200 1799
INFO 2018-03-21 18:48:30,208 basehttp 1321 140106696156928 "GET /jobUI/job/newjob/ HTTP/1.1" 200 1620
Error
None
ERROR 2018-03-21 18:48:47,499 basehttp 1321 140106696156928 "POST /jobUI/job/ HTTP/1.1" 500 0

我不知道为什么 request.POST['name'] 是 None 和其他东西也是如此..

我该如何解决?

谢谢。

【问题讨论】:

    标签: django python-3.x


    【解决方案1】:

    因为您的input 字段没有name 属性;否则浏览器将不会发送任何数据。

    注意,您确实应该为此使用 Django 表单框架。你当然绝对不应该有一个空白的except 子句。

    【讨论】:

    • 我很喜欢 :)。我尝试使用 django 表单,所以我制作了 forms.py,但效果不是很好,所以我只是制作了这个 naive(?) html 页面来测试我的观点,并且......我认为我必须学习更多。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 2017-03-02
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 2013-10-21
    • 2020-12-19
    • 2020-05-20
    相关资源
    最近更新 更多