2017-02-04 58 views
1

我一直在做一个个人项目,现在已经无法解决我一直在使用特定表单的问题。我过去曾经写过成功的Django表单,并且在这些表单之后进行了建模,但我仍然无法展示它。Django表单不显示

我的模型看起来像:

name = models.CharField(max_length=100) 
director = models.CharField(max_length=50) 
genre = models.TextField() 
rating = models.IntegerField() 
mpaa_rating = models.CharField(max_length=5) 
# movie_file = models.FileField() 
movie_cover = models.CharField(max_length=100) 
cast_list = models.TextField() 
year = models.TextField() 
url = models.CharField(max_length=100, default='http://www.imdb.com/title/') 

我的格式如:

class Meta: 
    model = Movie 
    fields = ['url', 'name', 'director', 'genre', 'rating', 'mpaa_rating', 'movie_cover', 'cast_list', 'year'] 

查看:

context = RequestContext(request) 
movie_form = MovieForm() 
if request.method == 'POST': 
    movie_form = MovieForm(data=request.POST) 
    if movie_form.is_valid(): 
     url = urlrequest.urlopen(movie_form.url) 
     movie = BeautifulSoup(url, 'html.parser') 
     movie_form.set_name(movie.find(itemprop='name')) 
     data = get_movie_data(url) 
     movie_form.data['name'] = data[0] 
     movie_form.data['director'] = data[4] 
     movie_form.data['genre'] = data[7] 
     movie_form.data['rating'] = data[3] 
     movie_form.data['mpaa_rating'] = data[2] 
     movie_form.data['year'] = data[1] 
     movie_form.data['cast_list'] = data[5] 
     movie_form.data['movie_cover'] = data[6] 
     movie_form.save() 
     print('movie added') 

return render_to_response('add_movie.html', {movie_form: 'movie_form'}, context) 

最后模板:

<form id="movie_form" method="post" action="{% url 'add_movie' %}"> 
    {% csrf_token %} 
    {{ movie_form.as_p }} 

    <input type="submit" value="Save" /> 
</form> 

我已经阅读了关于如何解决这个问题的堆栈溢出的几篇文章,但他们都没有固定我的。

感谢您的帮助

回答

1

你不发送表单模板:

return render_to_response('add_movie.html', {movie_form: 'movie_form'}, 

这种替换:

return render_to_response('add_movie.html', {'movie_form': movie_form}) 

UPDATE

顺便说一句,您应该使用render(),因为它使用RequestContext

如果你想在render_to_response模板上使用它,你必须添加参数context_instance=RequestContext(request),这可能有点烦人。

+2

也许你忘了给movie_form键添加引号 –

+0

@taoufikA哈哈..谢谢 – brunofitas

+0

谢谢,我确定这是它的一部分,但表格仍然没有加载。我看着我的其他表格正在工作,甚至没有注意到我扭转了他们。 – Michael