简体   繁体   English

字段值未在request.POST querydict中出现-python django

[英]Field value not turning up in request.POST querydict - python django

I'm sure I'm doing something really obviously wrong, but I can't see it. 我确定我做的事情确实很明显是错误的,但我看不到它。

I've made a simple form for a Django app, but it's only returning the csrf token, not the field value. 我为Django应用制作了一个简单的表单,但它只返回csrf令牌,而不返回字段值。 The form submits fine, but there's no 'event-title' key/value pair in the QueryDict. 表单提交很好,但是QueryDict中没有“事件标题”键/值对。

To be precise, when I log the QueryDict, it looks like this: 确切地说,当我登录QueryDict时,它看起来像这样:

<QueryDict: {u'csrfmiddlewaretoken': [u'dpXmMHTE3WmQvdvrAUD4oFer2WfKEjWd']}>

create_event.html: create_event.html:

{% extends "basic-layout.html" %}
{% block maincontent %}     
    <h1>Create Event</h1>

    {% if error_message %}<p>{{ error_message }}</p>{% endif %}

    <form action="/create-event" method="post">{% csrf_token %}
        <label for="event-title">Event title</label>
        <input type="text" title="event-title" id="event-title" required/>
        <input type="submit" value="create event"/>
    </form>
{% endblock %}

urls.py urls.py

from django.conf.urls import include, url
from django.contrib import admin
from django.views.decorators.csrf import csrf_exempt

import views

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', views.listEvents),
    url(r'^create-event',  csrf_exempt(views.createEvent))
]

views.py views.py

def createEvent(request):
    if request.method == 'GET':
        template = loader.get_template('create_event.html')
        context = RequestContext(request, {})
        return HttpResponse(template.render(context))
    if request.method == 'POST':
        logger = logging.getLogger('degub')
        logger.info(request.POST)
        event_title = request.POST.get('event-title', '')
        if event_title:
            event = Event(event_title)
            c = {}
            c.update(csrf(request))
            template = loader.get_template('list_events.html')
            context = RequestContext(request, c)
            return HttpResponse(template.render(context))
        else:
            template = loader.get_template('create_event.html')
            template_values = {"error_message": "Nope, didn't work"}
            context = RequestContext(request, template_values)
            return HttpResponse(template.render(context))

尝试在输入标签中添加name属性。

<input type="text" name="event-title" title="event-title" id="event-title" required/>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM