Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/12: Рейтинг темы: голосов - 12, средняя оценка - 4.92
0 / 0 / 2
Регистрация: 24.03.2013
Сообщений: 50
1

Class base view вместо функций

07.03.2020, 17:07. Показов 2415. Ответов 4
Метки нет (Все метки)

Добрый день! Занимаюсь изучением django возникли вопросы в части использования CBV - многие пишут, что для красивого кода лучше использовать классы вместо функций. Вопрос - помогите на примере сделать из функции класс.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})
 
 
def post_detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    return render(request, 'blog/post_detail.html', {'post': post})
 
 
@login_required
def post_new(request):
    if request.method == "POST":
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.save()
            return redirect('post_detail', pk=post.pk)
    else:
        form = PostForm()
    return render(request, 'blog/post_edit.html', {'form': form})
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.03.2020, 17:07
Ответы с готовыми решениями:

Cast to Base class from Derived class
Привет, подскажите, надо сделать каст чтобы затем сделать сериализацию а не работает на С#...

Вместо navigation bar с table view хочу сделать просто view controller
добрый вечер. В xcode есть стандартный темплейт с navigation controller, но там по дефолту...

Base class undefined, type redefinition
Проблема: Для начала поясню структуру: Класс CShockingLiter наследует классы CFlashlight и...

Method not found in base class delphi XE
Как исправить вот такую ошибку: Delphi выделяет вот эту процедуру: procedure AppIdle(Sender:...

__________________

Записывайтесь на профессиональные курсы Fullstack-разработчиков на Python
4
1025 / 561 / 241
Регистрация: 15.01.2019
Сообщений: 2,173
Записей в блоге: 1
07.03.2020, 17:11 2
Лучший ответ Сообщение было отмечено GearWay как решение

Решение

Python
1
2
3
def post_list(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    return render(request, 'blog/post_list.html', {'posts': posts})
Python
1
2
3
class PostList(ListView):
    queryset = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
    model = Post
Для post_detail - DetailView
Для post_new - CreateView
1
0 / 0 / 2
Регистрация: 24.03.2013
Сообщений: 50
08.03.2020, 19:56  [ТС] 3
В функции есть return, а в классах как их спользвоать?
0
1025 / 561 / 241
Регистрация: 15.01.2019
Сообщений: 2,173
Записей в блоге: 1
09.03.2020, 01:48 4
Лучший ответ Сообщение было отмечено GearWay как решение

Решение

GearWay, return только в функциях используется
1
9 / 5 / 4
Регистрация: 27.05.2017
Сообщений: 13
14.03.2020, 15:57 5
Цитата Сообщение от GearWay Посмотреть сообщение
В функции есть return, а в классах как их спользвоать?
Базовый класс на Django выглядит следующим образом

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.views import View
 
class PostNew(View):
 
    def get(self, request):
        form = PostForm()
        return render(request, 'blog/post_edit.html', {'form': form})
 
    def post(self, request):
        if request.method == "POST":
            form = PostForm(request.POST)
            if form.is_valid():
                post = form.save(commit=False)
                post.author = request.user
                post.save()
            return redirect('post_detail', pk=post.pk)
Но у джанго разработчиков есть один принцип - не повторяться, поэтому в Django давно реализованы классы по созданию, обновлению, удалению, детального просмотра или вывод списком
(CreateView, UpdateView, DeleteView, DetailView, ListView) - глянь ссылки внизу, ведут на документацию с примерами

Использование этих классов позволяет существенно сократить твой код

Источник: https://docs.djangoproject.com... iews/base/
https://docs.djangoproject.com... c-display/
https://docs.djangoproject.com... c-editing/
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.03.2020, 15:57

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Ошибка — base operand of '->' has nonpointer class qwerty
делаю прогу, чтоб разобраться как устроены классы, вылетает ошибка, подскажите почему пожалуйста...

error C2504: 'TwoDimentinalShape' : base class undefined
Всем здравствуте, мой конкретный класс не видит свой абстрактный класс, может я что-то напутала,...

Ошибка Cannot find default constructor to initialize base class
class CompGame: public TForm { public: int z; CompGame(int l=0){z=l;} };есть класс...

E2251 Cannot find default constructor to initialize base class
Здравствуйте. Столкнулся с данной ошибкой: class fCountry { public: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.