2015-08-30 29 views
0

我確定我正在做一些非常明顯的錯誤,但我看不到它。字段值沒有在request.POST querydict中出現 - python django

我已經爲Django應用程序做了一個簡單的表單,但它只返回csrf標記,而不是字段值。表單提交正常,但QueryDict中沒有「事件標題」鍵/值對。

準確地說,當我登錄了的QueryDict,它看起來像這樣:

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

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

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

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)) 
+0

您的輸入沒有名稱。 '' – beezz

回答

1

嘗試在輸入標記中添加name屬性。

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

啊哈!找到並替換「標題」的'名稱'不是我的朋友,那裏。謝謝! – ldbrooke