Django不渲染ModelForm

时间:2015-07-14 09:29:05

标签: python django django-forms modelform

我正在研究一个关于Django的小项目,我在渲染ModelForm时遇到了一些问题。在main.html标记{{form.ad_p}}中,似乎无法正常工作。我只看到" Save"按钮,不要看任何ModelForm字段。

如果我将下面的代码放到shell

 form = AddPath()
    form.as_p()

我明白了:

form.as_p()
u'<p><label for="id_name">Name:</label> <input id="id_name" maxlength="200" name="name" type="text" /></p>\n<p><label for="id_route_data">Route data:</label> <textarea cols="40" id="id_route_data" name="route_data" rows="10">\r\n</textarea></p>'

你能解释一下,我做错了什么?

我已经在stackoverflow上搜索了,但同样的问题还没有解决。我希望,我会更幸运

models.py:

from django.db import models
from django.contrib.auth.models import User

class Path(models.Model):

    user = models.ForeignKey(User)
    name = models.CharField(max_length='200')
    route_data = models.TextField()

    def __unicode__(self):
        return self.name

views.py:

from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.core.context_processors import csrf

from google_maps.forms import AddPath


def index(request):

    args = {}
    args.update(csrf(request))
    form = AddPath()
    return render_to_response('main.html', args)


def add_path(request):

    #me = request.user
    me = 'test'
    if request.method == 'POST':
        form = AddPath(request.POST)
        if form.is_valid():
            tmpForm = form.save(commit=False)
            tmpForm.user = me
            tmpForm.save()
            return HttpResponse('Saved')
        else:
            return HttpResponse(form.errors)

main.html中

{% extends 'basis.html' %}

{% block leftbar %}

        <form action={% url 'add_path' %} method="post"> 
            {% csrf_token %}
            {{ form.as_p }}
            <input type="hidden", id="coordinate" name="coordinate"/>
            <input type="submit" name="submit" value="Save"/>
        </form>

{% endblock %}

0 个答案:

没有答案