Как заставить мое представление на основе классов работать в django

#python #django #python-3.x

#python #django #python-3.x

Вопрос:

Мой проект посвящен созданию программного обеспечения для ведения блога с помощью Django. В приложении все работает нормально, но я читал о представлении на основе классов, которое я не до конца понял, поскольку я не в ООП. Я просто хотел преобразовать все мое представление на основе функций в представление на основе классов, но когда я попробовал это, я получил эту ошибку

   File "C:UsersDe Stone Of DavidDesktoppythonsecondprojectseblogblogviews.py", line 146
    def(self, request, **kwargs):
       ^
SyntaxError: invalid syntax
  

вот код для представления на основе функций
views.py

 def newPost(request):    
    deyCat = Category.objects.all() 
    if request.method =='POST':
        myForm = NewPostForm(request.POST, request.FILES)
        response_data = {
            'SType': 'danger',
            'message': "An Error Occured, pls try again later"
        }
        if request.POST.get('deyHidden') == 'create_hidden':
            title = request.POST.get('title')
            content = request.POST.get('content')
            category_id = request.POST.get('category')
            image = request.FILES.get('image') 
            if myForm.is_valid():
                if Posts.objects.create(title=title, content=content, category_id=category_id, image=image, author_id=request.user.id):
                    response_data = {
                        'SType': 'success',
                        'message': "Saved Successfully"
                    }   
            return HttpResponse(json.dumps(response_data), content_type="application/json")  
        elif request.POST.get('deyHidden') == 'category_hidden':
            CatNames = request.POST.getlist('CatName[]')
            for CatName in CatNames:
                Category.objects.get_or_create(CatName=CatName)
            response_data = {
                'SType': 'success',
                'message': "Saved Successfully"
            }                
            return HttpResponse(json.dumps(response_data), content_type="application/json")

    context={
        'form':NewPostForm(),
        'title':'Create Post',
        'category': Category.objects.all()
    }
    return render(request, 'blog/form.html', context)
  

вот код для представления на основе классов
views.py

 class NewPostView(TemplateView):
    template_name = 'blog/form.html'
    deyCat = Category.objects.all()

    def(self, request, **kwargs):
        context = {
            'form': NewPostForm(),
            'title': 'Create Post',
            'category': self.deyCat
        }
        return render(request, self.template_name, context)

    def post(self, request, **kwargs):
        myForm = NewPostForm(request.POST, request.FILES)
        response_data = {
            'SType': 'danger',
            'message': "An Error Occured, pls try again later"
        }
        if request.POST.get('deyHidden') == 'create_hidden':
            title = request.POST.get('title')
            content = request.POST.get('content')
            category_id = request.POST.get('category')
            image = request.FILES.get('image')
            if myForm.is_valid():
                if Posts.objects.create(title=title, content=content, category_id=category_id, image=image,
                                        author_id=request.user.id):
                    response_data = {
                        'SType': 'success',
                        'message': "Saved Successfully"
                    }
            return HttpResponse(json.dumps(response_data), content_type="application/json")
        elif request.POST.get('deyHidden') == 'category_hidden':
            CatNames = request.POST.getlist('CatName[]')
            for CatName in CatNames:
                Category.objects.get_or_create(CatName=CatName)
            response_data = {
                'SType': 'success',
                'message': "Saved Successfully"
            }
            return HttpResponse(json.dumps(response_data), content_type="application/json")
  

пожалуйста, как я могу решить это сообщение об ошибке или что я делаю не так?

Комментарии:

1. Вы определяете функцию, не задавая ей имя.

2. дайте функции def(self, request, **kwargs): имя, подобное этому def get(self, request, **kwargs):

3. пожалуйста, но как я могу очистить данные из формы перед отправкой их в базу данных

4. По любым дальнейшим вопросам, пожалуйста, закройте этот и откройте другой.

5. да, вы можете очистить форму. это зависит от вида проверки и валидаций, которые вы хотите выполнить, иначе в процессе производства ваш сайт будет испорчен. Как заявил Орельен, этот вопрос выходит за рамки публикации. Вы можете открыть новый вопрос и посмотреть, кто хочет помочь. я тоже здесь для вас

Ответ №1:

Вы должны дать своей функции имя, прежде чем передавать ей аргументы.

Вместо def(self, request, **kwargs) вы должны написать def my_function(self, request, **kwargs)