Browse Source

Пробую прилипить комменты.

Пока что выходит не очень.
master
Дмитрий 3 years ago
parent
commit
104bad5388
  1. 1
      blog/blog/settings.py
  2. 0
      blog/comments/__init__.py
  3. 3
      blog/comments/admin.py
  4. 6
      blog/comments/apps.py
  5. 1
      blog/comments/eyerest/Main
  6. 36
      blog/comments/migrations/0001_initial.py
  7. 18
      blog/comments/migrations/0002_alter_comment_reply.py
  8. 0
      blog/comments/migrations/__init__.py
  9. 26
      blog/comments/models.py
  10. 3
      blog/comments/tests.py
  11. 3
      blog/comments/views.py
  12. 5
      blog/posts/admin.py
  13. 8
      blog/posts/templates/posts/post.html
  14. 5
      blog/posts/views.py

1
blog/blog/settings.py

@ -40,6 +40,7 @@ INSTALLED_APPS = [
"django.contrib.staticfiles", "django.contrib.staticfiles",
"posts.apps.PostConfig", "posts.apps.PostConfig",
"mainpage.apps.MainpageConfig", "mainpage.apps.MainpageConfig",
"comments.apps.CommentsConfig",
] ]
MIDDLEWARE = [ MIDDLEWARE = [

0
blog/comments/__init__.py

3
blog/comments/admin.py

@ -0,0 +1,3 @@
from django.contrib import admin
# Register your models here.

6
blog/comments/apps.py

@ -0,0 +1,6 @@
from django.apps import AppConfig
class CommentsConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'comments'

1
blog/comments/eyerest/Main

File diff suppressed because one or more lines are too long

36
blog/comments/migrations/0001_initial.py

@ -0,0 +1,36 @@
# Generated by Django 4.0.3 on 2022-04-09 12:38
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('posts', '0003_alter_post_options'),
]
operations = [
migrations.CreateModel(
name='CommentAuthor',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('author_name', models.CharField(max_length=60, verbose_name='Имя автора')),
('author_secret_hash', models.CharField(max_length=256, verbose_name='Хеш секрета')),
],
),
migrations.CreateModel(
name='Comment',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('author_name', models.CharField(max_length=60, verbose_name='имя автора')),
('author_secret', models.CharField(blank=True, max_length=128, verbose_name='секретная строка')),
('reply', models.IntegerField(blank=True)),
('comment_text', models.TextField()),
('date', models.DateTimeField()),
('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='posts.post')),
],
),
]

18
blog/comments/migrations/0002_alter_comment_reply.py

@ -0,0 +1,18 @@
# Generated by Django 4.0.3 on 2022-04-09 13:01
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('comments', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='comment',
name='reply',
field=models.IntegerField(null=True),
),
]

0
blog/comments/migrations/__init__.py

26
blog/comments/models.py

@ -0,0 +1,26 @@
from django.db import models
from posts.models import Post
class Comment(models.Model):
"""Класс для комента."""
post = models.ForeignKey(Post, on_delete=models.CASCADE)
author_name = models.CharField("имя автора", max_length=60)
author_secret = models.CharField("секретная строка", max_length=128, blank=True)
reply = models.IntegerField(null=True)
comment_text = models.TextField()
date = models.DateTimeField()
class CommentAuthor(models.Model):
"""Валидация автора коммента.
Если коментатор оставил секретную фразу, то от нее вычисляется
хеш, который сравнивается с тем, который есть в базе для этого
сочетания author_name:hash.
"""
author_name = models.CharField("Имя автора", max_length=60)
author_secret_hash = models.CharField("Хеш секрета", max_length=256)

3
blog/comments/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

3
blog/comments/views.py

@ -0,0 +1,3 @@
from django.shortcuts import render
# Create your views here.

5
blog/posts/admin.py

@ -5,4 +5,7 @@ from .models import Post
@admin.register(Post) @admin.register(Post)
class PostAdmin(admin.ModelAdmin): class PostAdmin(admin.ModelAdmin):
fields = ("title", "text", "pub_date") fieldsets = (
("Основное", {"classes": ("wide",), "fields": ("title", "text")}),
("Дополнительно", {"classes": ("collapse",), "fields": ("pub_date",)}),
)

8
blog/posts/templates/posts/post.html

@ -17,6 +17,14 @@
<div class="subtitle is-6">Опубликован: {{ post.pub_date | date:'Y-m-d, H:i' }}</div> <div class="subtitle is-6">Опубликован: {{ post.pub_date | date:'Y-m-d, H:i' }}</div>
<div class="content is-medium">{{ post.text }}</div> <div class="content is-medium">{{ post.text }}</div>
<br>
<p>Комменты</p>
{% for comment in comments %}
<p>{{ comment.author_name }}</p>
<p>{{ comment.comment_text }}</p>
<br>
{% endfor %}
</section> </section>
{% endautoescape %} {% endautoescape %}

5
blog/posts/views.py

@ -2,6 +2,7 @@ from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse from django.http import HttpResponse
from .models import Post from .models import Post
from comments.models import Comment
import re import re
@ -16,5 +17,5 @@ def detail(request, post_id):
"""Страница с просмотром поста.""" """Страница с просмотром поста."""
# вынести отсюда все. Также надо обработать текст поста тут. # вынести отсюда все. Также надо обработать текст поста тут.
post = get_object_or_404(Post, pk=post_id) post = get_object_or_404(Post, pk=post_id)
comments = post.comment_set.all()
return render(request, "posts/post.html", {"post": post}) return render(request, "posts/post.html", {"post": post, "comments": comments})

Loading…
Cancel
Save