2017-02-04 3 views
1

Ich habe jetzt ein persönliches Projekt bearbeitet und konnte ein Problem, das ich mit einem bestimmten Formular hatte, nicht beheben. Ich habe in der Vergangenheit erfolgreiche Django-Formulare geschrieben und habe sie danach modelliert, aber ich kann es immer noch nicht zur Anzeige bringen.Django-Formular wird nicht angezeigt

Mein Modell sieht so aus:

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/') 

Meine Form wie:

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

Ausblick:

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) 

Und schließlich Vorlage:

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

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

Ich habe mehrere Beiträge auf Stack-Überlauf gelesen, wie das Problem behoben werden kann, aber keiner von ihnen hat meinen behoben.

Danke für die Hilfe

Antwort

1

Sie sind nicht die Form der Vorlage zu senden:

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

mit diesem ersetzen:

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

UPDATE

By the way, Sie sollten stattdessen render() verwenden, da es die RequestContext verwendet.

Wenn Sie es auf der Vorlage mit render_to_response verwenden möchten, müssen Sie den Parameter context_instance=RequestContext(request) hinzufügen, was ein bisschen nervig sein kann.

+2

vielleicht vergessen Sie, Zitate zu dem Film_Form-Schlüssel hinzufügen –

+0

@taoufikA Haha .. danke – brunofitas

+0

Danke, ich bin mir sicher, dass war ein Teil davon, aber das Formular wird immer noch nicht geladen. Ich schaute auf meine anderen Formen, die funktionieren, und bemerkte nicht einmal, dass ich sie umkehrte. – Michael