Учу 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})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите как корректно задавать размеры иконкам svg? В моем коде у меня есть 2 элемента svg: исходный и ссылающийсяЯ задал размеры и вьюбокс...
Мне необходимо, что бы при нажатии на ссылку переходило на другую страницу в определенную её часть с формой
пробую вставить svg таким образом: <img src="/assets/menu/menubuttonsvg"> но при этом ничего не работает (файл assets находится в корне, всё остальное тоже верно)
Если поток был создан локально, обязательно ли его закрывать в конце метода?