У моей модели есть поле вызова topic
, и я хочу создать страницу, которая может показывать спецификацию c, а URL могут быть динамическими c путь к различным темам, отображаемым одним и тем же шаблоном html , Как мне это сделать?
models.py:
TOPIC = (
(0,"Finance"),
(1,"Toys"),
(2,"Foods"),
(3,"Travel"),
)
class Post(models.Model):
name = models.CharField(max_length=200)
slug = models.SlugField(unique=True, max_length=200)
author = models.ForeignKey(User, on_delete=models.CASCADE,related_name='blog_posts')
updated_on = models.DateTimeField(auto_now= True)
created_on = models.DateTimeField(auto_now_add=True)
body = RichTextField(null=True)
status = models.IntegerField(choices=STATUS, default=0)
topic = models.IntegerField(choices=TOPIC, default=0)
cover_img = models.ImageField(upload_to='post_cover', null=True, default='post_cover/coming_soon.jpg')
def __str__(self):
return self.name
def get_img(self):
return f"{'/media/post_cover/'+self.cover_img}"
html
<div class="col-md-6 mt-3 ">
<a href="{% url 'topic_list' %}">
<img src="../media/topic/travel3.jpg" alt=''>
</a>
</div>
views.py
def topic_list(request):
posts = Post.objects.filter(topic=0)
context = {'posts': posts, 'autor_list':autor_list}
return render(request, 'topic_list.html', context)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
path('topic/', views.topic_list, name='topic_list'),
path('<slug:slug>/', views.post_detail, name='post_detail'),]