# Create your models here. # 카테고리를 추가한다. classCategory(models.Model): # Category의 이름이 유일할 수 있게 unique옵션을 준다. name = models.CharField(max_length=25, unique=True) description = models.TextField(blank=True) # unicode를 허용한다. # slug를 이용하여 url에 카테고리가 뜰 수 있게 해준다. slug = models.SlugField(unique=True, allow_unicode=True) defget_absoulte_url(self): return'/blog/category/{}/'.format(self.slug) # 카테고리 이름을 출력해준다. def__str__(self): return self.name classMeta: verbose_name_plural = 'categories'
admin에 slug가 자동으로 생성 될 수 있게하기
blog/admin.py
from django.contrib import admin from .models import Post, Category # Register your models here. classCategoryAdmin(admin.ModelAdmin): # 미리 만들어지는 field # slug를 자동으로 만들어준다. prepopulated_fields = {'slug': ('name', )} admin.site.register(Post) admin.site.register(Category, CategoryAdmin)
url 만들어주기
blog/urls.py
from django.urls import path, include from .import views urlpatterns = [ # path('', views.index), # path('<int:pk>/', views.post_detail), path('category/<str:slug>/', views.PostListByCategory.as_view()), path('<int:pk>/', views.PostDetail.as_view()), path('', views.PostList.as_view()), ]