проблема в Django форме

209
23 ноября 2021, 00:10

Учу Django, и осваиваю встроиные Django формы. проблема в том что у меня есть форма, которая должна либо создавать тег либо выводить ошибку(думаю это проблема с указанием url в шаблоне, но я проверял всё равно не работает, кнопка просто ничего не возвращает)

шаблон tag_create.html:

{% extends 'blog/base_blog.html' %}
{% block title %}
    Tag Create - {{ block.super }}
{% endblock %}
{% block content %}
    <form action="{% url 'tag_create_url' %}" method="post">
        {% csrf_token %}
       {% for field in form %}
            <div class="form-group">
                {% if field.errors %}
                    <div class="alert alert-danger">
                        {{ field.errors }}
                    </div>
                {% endif %}
                {{ field.label }}
                {{ field }}
            </div>
       {% endfor %}
        <button type="submit" class="btn btn-primary">Create Tag</button>
    </form>
{% endblock %}

urls.py:

from django.urls import path
from .views import *
# some-article
urlpatterns = [
    path('', posts_list, name='posts_list_url'),
    path('post/<str:slug>/', PostDetail.as_view(), name='post_detail_url'),
    path('tags/', tag_list, name='tag_list_url'),
    path('tag/create', TagCreate.as_view(), name='tag_create_url'),
    path('tag/<str:slug>', TagDetail.as_view(), name='tag_detail_url'),
]

файл с самой формой forms.py:

from django import forms
from blog.models import Tag
from django.core.exceptions import ValidationError

class TagForm(forms.Form):
    title = forms.CharField(max_length=50)
    slug = forms.SlugField(max_length=50)
    title.widget.attrs.update({'class': 'form-control'})
    slug.widget.attrs.update({'class': 'form-control'})
    def clean_slug(self):
        new_slug = self.cleaned_data['slug'].lower()
        if new_slug == 'create':
            raise ValidationError('Slug must not be created')
        else:
            return new_slug
    def save(self):
        new_tag = Tag.objects.create(title=self.cleaned_data['title'],
                                     slug=self.cleaned_data['slug']
                                     )
        return new_tag

и вьюха которая реализовывает методы get и post:

from django.shortcuts import render, redirect
from django.views.generic import View
from blog.models import Post, Tag
from blog.forms import TagForm
from .utils import ObjectDetailMixin
class TagCreate(View):
    def get(self, request):
        form = TagForm()
        return render(request, 'blog/tag_create.html', context={'form': form})
    def post(self, request):
        bound_form = TagForm(request.POST)
        if bound_form.is_valid():
            new_tag = bound_form.save()
            return redirect(new_tag)
        return render(request, 'blog/tag_create.html', context={'form': bound_form})
READ ALSO
Не показываются иконки svg в HTML

Не показываются иконки svg в HTML

Подскажите как корректно задавать размеры иконкам svg? В моем коде у меня есть 2 элемента svg: исходный и ссылающийсяЯ задал размеры и вьюбокс...

172
Не работает якорь указывающий на другую страницу

Не работает якорь указывающий на другую страницу

Мне необходимо, что бы при нажатии на ссылку переходило на другую страницу в определенную её часть с формой

189
как вставить svg через тег &lt;img&gt;?

как вставить svg через тег <img>?

пробую вставить svg таким образом: <img src="/assets/menu/menubuttonsvg"> но при этом ничего не работает (файл assets находится в корне, всё остальное тоже верно)

197
Нужно ли закрывать локальныеIO-потоки в Java

Нужно ли закрывать локальныеIO-потоки в Java

Если поток был создан локально, обязательно ли его закрывать в конце метода?

152