Возврат вывода функции в представление функции django
Я хочу использовать вывод из функции в представлении на основе функции.
Передача вывода функции get_context_data
в представление функции ShowProfilePage
def ShowProfilePageView(request, username):
def get_context_data(self, *args, **kwargs):
context = super(ShowProfilePageView, self).get_context_data(*args, **kwargs)
page_user = get_object_or_404(UserProfile, id=self.kwargs['pk'])
user_posts = Post.objects.filter(author= page_user.user).order_by('-post_date')
username = page_user.user
context['page_user'] = page_user
context['user_posts'] = user_posts
context['username'] = username
return context
context = {}
return render(request, 'registration/user_profile.html', context)
Вы путаете Django class-based view и function-based view. Вам также следует пересмотреть свои знания ООП в Python, потому что
super(ShowProfilePageView, self).get_context_data(*args, **kwargs)
связано с концепцией наследования для классов, но вы определяете и используете в функции, которая является ShowProfilePageView
.
Я пытаюсь исправить ваш код:
def ShowProfilePageView(request, username):
page_user = get_object_or_404(UserProfile, username=username)
user_posts = Post.objects.filter(author=page_user.user).order_by("-post_date")
username = page_user.user
context = {"page_user": page_user, "user_posts": user_posts, "username": username}
return render(request, "registration/user_profile.html", context)