Где я должен поставить логику Джанго - PullRequest
0 голосов
/ 17 октября 2018

Это моя форма:

class UploadForm(forms.ModelForm):

    upload_what = forms.URLField()
    upload_what.widget.attrs.update(size = '100')

Так что все просто, после того, как пользователь вставит link, мне нужно проверить, представляет ли ссылка cat или dogи в зависимости от этих результатов я буду загружать новый объект cat или dog в свою базу данных после того, как я выполню некоторые конкретные шаги.

Мой вопрос:

Куда мне поместить все этологика?В view, в form или в model?Помните, что модели cat и dog имеют разные поля, и в фоновом режиме будет некоторая обработка, чтобы выяснить, чем должны быть заполнены эти поля.

Я читал, что практика заключается в размещениився логика в models (толстые модели), но здесь я действительно не знаю, какую модель я буду использовать, когда пользователь нажимает кнопку Submit.

Например, в моем views.py это может выглядеть примерно так:

def post(self,request,*args,**kwargs):

    form = self.form_class(request.POST)
    if form.is_valid():
        link = form.cleaned_data['upload_what']
        if link == "cat":
            name = "some cat name"
            legs = #do some logic here
            # save cat to database
        elif link == "dog":
            #... some other logic here

            #save dog to database
        return HttpResponseRedirect('/success/')

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

view.py - это место для логики вашего приложения, View.py

0 голосов
/ 17 октября 2018

view.py - это логическая часть Django.Вы можете объявить структуру на основе классов или использовать общеизвестные методы.

Представление на основе классов:

# some_app/views.py
from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"

На основе методовпросмотр:

from django.shortcuts import render

def aboutview(request):
   return render(request, 'about.html' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...