сделал сайт на котором можно добавлять статьи и хочу чтобы пользователи могли комментировать эти статьи
в models.py
from django.db import models
class Articles(models.Model):
title = models.CharField("название", max_length=50)
anons = models.CharField("анонс", max_length=250)
full_text = models.TextField('текст')
date = models.DateTimeField('время создания')
def __str__(self):
return self.title
def get_absolute_url(self):
return f'/news/{self.id}'
class Meta:
verbose_name = 'новость'
verbose_name_plural = 'новости'
в forms.py
from .models import Articles
from django.forms import ModelForm, TextInput, DateTimeInput, Textarea
class ArticlesForm(ModelForm):
class Meta:
model = Articles
fields = ['title', 'anons', 'full_text', 'date']
widgets = {
'title': TextInput(attrs={
'class': "form-control",
'placeholder': "название статьи"
}),
'anons': TextInput(attrs={
'class': "form-control",
'placeholder': "анонс статьи"
}),
'full_text': Textarea(attrs={
'class': "form-control",
'placeholder': "текст"
}),
'date': DateTimeInput(attrs={
'class': "form-control",
'placeholder': "дата создания дд.мм.гггг"
})
}
в apps.py
from django.apps import AppConfig
class NewsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'news'
в admin.py
from django.contrib import admin
from .models import Articles
admin.site.register(Articles)
в news_home.html
{% extends 'main/layout.html' %}
{% block title %} новости {% endblock %}
{% block body %}
<div class="features">
<h1>новости</h1>
{% if news %}
{% for el in news %}
<div class="alert alert-warning">
<h3>{{ el.title }}</h3>
<p>{{ el.anons }}</p>
<a href="{% url 'news-detail' el.id %}" class="btn btn-warning"> прочесть статью </a>
</div>
{% endfor %}
{% else %}
<p>у вас нет статьи</p>
{% endif %}
</div>
{% endblock %}
в details_viev.html
{% extends 'main/layout.html' %}
{% block title %}{{ article.title }}{% endblock %}
{% block body %}
<div class="features">
<h1>{{ article.title }}</h1>
<p> {{ article.full_text }} </p>
<p>{{ article.date }}</p>
<a href="{% url 'news-delete' article.id %}" class="btn btn-danger">удалить</a>
<a href="{% url 'news-update' article.id %}" class="btn btn-info">изменить</a>
</div>
{% block body %}
в create.html
{% extends 'main/layout.html' %}
{% block title %} форма добавления статьи {% endblock %}
{% block body %}
<div class="features">
<h1>форма добавления статьи</h1>
<form method="post">
{% csrf_token %}
{{ form.title }}<br>
{{ form.anons }}<br>
{{ form.full_text }}<br>
{{ form.date }}<br>
<span> {{ error }} </span>
<button class="btn btn-btn-success" type="submit"> опубликовать статью </button>
</form>
</div>
{% endblock %}
в layout.html
{% load static %}
<!doctype html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="author" content="илья">
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css">
<link rel="stylesheet" href="{% static 'main/css/main.css' %}">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/>
</head>
<body>
<aside>
<img src="{% static 'main/img/185102_receipt_shopping_icon.png' %}" alt="логотип">
<span class="logo">mysite</span>
<h3>меню</h3>
<ul>
<a href="{% url 'home' %}"><li><i class="fa fa-home" aria-hidden="true"></i> Главная</li></a>
<a href="{% url 'about' %}"><li><i class="fa fa-book" aria-hidden="true"></i> Про нас</li></a>
<a href="{% url 'news_home' %}"><li><i class="fa fa-paper-plane" aria-hidden="true"></i> новости</li></a>
<a href="{% url 'contact' %}"><li><i class="fa fa-envelope" aria-hidden="true"></i> Контакты</li></a>
<a href="{% url 'create' %}"><li><button class="btn btn-info"><i class="fas fa-plus circle"></i> добавить статью</button></li></a>
</ul>
</aside>
<main>
{% block body %}
{% endblock %}
</main>
</body>
</html>