Ich versuche, meine 3 ähnliche Funktionsansichten in Vererbungsklassen-basierte Ansichten zu ändern.COnverting von Funktion zu Klassenvererbung kryptischer Fehler
Ansichten sehen fast identisch nur die Form und ihr Name ist anders. Einer von ihnen unter:
@login_required
def add_video(request):
if request.method == 'POST':
movie_form = MovieForm(request.POST)
if movie_form.is_valid():
user = request.user
new_post = movie_form.save(commit=False)
new_post.author = user
new_post.save()
movie_form.save_m2m()
messages.success(request, 'Post successfully added')
return redirect(new_post)
else:
movie_form = MovieForm()
return render(request, 'ak47/movie.html', {'movie_form': movie_form})
Wie CBV sieht es wie folgt aus:
@login_required
class AddingView(CreateView):
def form_valid(self, form):
user = self.request.user
new_post = form.save(commit=False)
new_post.author = user
new_post.save()
form.save_m2m()
messages.success(request, 'Post successfully added')
class AddMovieView(AddingView):
form_class = MovieForm
class AddUrlView(AddingView):
form_class = UrlImgForm
Leider Fehlerprotokoll zeigt etwas seltsam:
File "/home/cruel/PycharmProjects/silverak/ak47/views.py", line 249, in <module>
class AddMovieView(AddingView):
TypeError: function() argument 1 must be code, not str
Ich glaube nicht, das Problem in dem Teil des Codes, die Sie gezeigt haben. Können Sie Ihre Frage bearbeiten, um den Codeabschnitt in der Nähe von Zeile 249 von 'views.py' anzuzeigen? – evergreen
Deklaration der Klasse AddMovieView (AddingView) ist 249 Zeile, direkt darüber ist Klasse AddingView. Ich konnte auch keinen Fehler in diesem Code finden und die Benennung des Fehlers hilft mir wirklich nicht. Das Problem trat auf, nachdem ich die Klasse " Klasse AddMovieView (AddingView): form_class = MovieForm" geschrieben hatte. Vorerst habe ich die Funktionsansicht kommentiert und benutzt, aber die Lösung dieses Problems ist wichtig für mich. –
Ist CreateView eine Klasse? – evergreen