Django отображает теги шаблонов из базы данных в html - PullRequest
0 голосов
/ 30 октября 2018

Как я могу визуализировать теги шаблонов из моделей. TextField в html. В моем админке django:

Django admin to edit content picture

Я планирую расширить контент с помощью некоторого редактора wysiwyg.

В wiews.py я определил, как сделать это в формате html, например:

from django.shortcuts import render
from .models import Email

def EmailData(request, slug):

   email = Email.objects.get(slug=slug)

   return render(request, email.template.path,{
       "email": email
   })

Html:

{% extends "baseEmail.html" %}
{% block emailContent %}

        <h1>{{ email.email }}</h1>
        <h2>{{ email.subject }}</h2>

        <h2>{{ email.content|safe }}</h2>

        <h2>{{ email.created }}</h2>
        <h2>{{ email.sendToAdmin }}</h2>
        <h2>{{ email.template.path }}</h2>
{% endblock %}

Тег h1 отображается правильно, а переменная - нет. Как я могу отобразить набор переменных из текстового поля?

Это результат:

Web site result

Модель электронной почты:

import os
from django.urls import reverse
from django.db import models
from django.conf import settings
from django.utils.text import slugify

class Category(models.Model):
    id                 = models.AutoField(primary_key=True)
    Name               = models.CharField(max_length=70)

    def __str__(self):
        return self.Name


class Template(models.Model):
    id                 = models.AutoField(primary_key=True)
    Name               = models.CharField(max_length=70, blank=True)
    Folder          =models.ForeignKey(Category,on_delete=models.SET_NULL, blank=True, null=True)
    templateName       = models.CharField(max_length=70)
    path               = models.CharField(max_length=200, blank=True)

    def __str__(self):
        return self.Name

    def _get_path_to_template(self):

## SAVE DIRNAMES TO DATABASE

    dir = settings.EMAILS_TEMPLATE
    allDirs =os.listdir(dir)
    for dirname in allDirs:
        if Category.objects.filter(Name=dirname).exists():
            pass
        else:
            Category.objects.create(Name = dirname)

## GET TEMPLATE PATH

    name     = self.templateName
    category = str(self.Folder)
    fullPath = category + "/" + name + '.html'
    return fullPath


def save(self, *args, **kwargs):
    self.path = self._get_path_to_template()
    super().save()




class Email(models.Model):
    id              = models.AutoField(primary_key=True)
    email           = models.CharField(max_length=70)
    subject         = models.CharField(max_length=70)
    content         = models.TextField(blank=True)
   template        = models.ForeignKey(Template, on_delete=models.CASCADE)

   sendToAdmin     = models.BooleanField(default=False)
   failSilently    = models.BooleanField(default=True)

   slug            = models.SlugField(max_length=100, 
   db_index=True,blank=True)
updated         = models.DateTimeField(auto_now=True, auto_now_add=False)
created         = models.DateTimeField(auto_now=False, auto_now_add=True)

def __str__(self):
    return self.email

def get_absolute_url(self):
    return reverse("emails", kwargs={'slug' : self.slug})

def _get_unique_slug(self):
    slug = slugify(self.email)
    unique_slug = slug
    num = 1
    while Email.objects.filter(slug=unique_slug).exists():
        unique_slug = '{}-{}'.format(slug, num)
        num += 1
    return unique_slug

def save(self, *args, **kwargs):

    self.slug = self._get_unique_slug()

    super().save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...