Browse Source

Теперь картинки отображаются по тегу.

Дикая лямбда и ее подруга регулярка.
master
Дмитрий 3 years ago
parent
commit
32d6299c0e
  1. 4
      blog/blog/settings.py
  2. 6
      blog/blog/urls.py
  3. 10
      blog/posts/views.py

4
blog/blog/settings.py

@ -121,6 +121,10 @@ USE_TZ = True
STATIC_URL = "static/"
# пути для загрузки файлов
MEDIA_ROOT = os.path.join(BASE_DIR, "data/") # 'data' is my media folder
MEDIA_URL = "/media/"
# для того чтобы использовать общие статические файлы
STATICFILES_DIRS = [
BASE_DIR / "static",

6
blog/blog/urls.py

@ -15,6 +15,8 @@ Including another URLconf
"""
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path("", include("mainpage.urls")),
@ -22,3 +24,7 @@ urlpatterns = [
path("comments/", include("comments.urls")),
path("admin/", admin.site.urls),
]
# позволяет выводить картинки, если мы в режиме дебага
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

10
blog/posts/views.py

@ -6,6 +6,8 @@ from comments.models import Comment
from comments import services as comments_services
import re
def index(request):
"""Список постов."""
@ -24,6 +26,14 @@ def detail(request, post_id):
_nickname = request.COOKIES.get("nickname")
nickname = comments_services.decode_nickname(_nickname) if _nickname else ""
images = post.image_set.all()
# вывод картинок в посте, замена шаблона по регулярке
post.text = re.sub(
r"\[\[image\:(.+?)\]\]",
lambda x: f"<img src='{images.filter(slug=x.group(1))[0].image.url}'/>",
post.text,
)
return render(
request,
"posts/post.html",

Loading…
Cancel
Save