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/" STATIC_URL = "static/"
# пути для загрузки файлов
MEDIA_ROOT = os.path.join(BASE_DIR, "data/") # 'data' is my media folder
MEDIA_URL = "/media/"
# для того чтобы использовать общие статические файлы # для того чтобы использовать общие статические файлы
STATICFILES_DIRS = [ STATICFILES_DIRS = [
BASE_DIR / "static", BASE_DIR / "static",

6
blog/blog/urls.py

@ -15,6 +15,8 @@ Including another URLconf
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import path, include from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [ urlpatterns = [
path("", include("mainpage.urls")), path("", include("mainpage.urls")),
@ -22,3 +24,7 @@ urlpatterns = [
path("comments/", include("comments.urls")), path("comments/", include("comments.urls")),
path("admin/", admin.site.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 from comments import services as comments_services
import re
def index(request): def index(request):
"""Список постов.""" """Список постов."""
@ -24,6 +26,14 @@ def detail(request, post_id):
_nickname = request.COOKIES.get("nickname") _nickname = request.COOKIES.get("nickname")
nickname = comments_services.decode_nickname(_nickname) if _nickname else "" 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( return render(
request, request,
"posts/post.html", "posts/post.html",

Loading…
Cancel
Save