2017-12-26 56 views
0

데이터베이스에서 URL 패턴을 동적으로 생성하는 코드를 작성했습니다. 이 URL에는 수준 경로가 하나만 있습니다 (domain.com/something).Django 2.0이 동적으로 URL 패턴을 생성합니다

someapp/models.py

class SomeModel(models.Model): 
    pattern = models.CharField(max_length=50) 
    name = models.CharField(max_length=50) 
    text = models.CharField(max_length=50) 

someapp/apps.py

class SomeAppConfig(AppConfig): 
    name = 'someapp' 

    def ready(self): 
     from .models import SomeModel 
     from .urls import urlpatterns 
     from . import views 

     urls_in_db = SomeModel.objects.all() 
     for url_in_db in urls_in_db: 
      urlpatterns.append(path(url_in_db.pattern, 
            views.SpecialView.as_view(), 
            name=url_in_db.name) 

someapp/views.py

class SpecialView(generic.TemplateView): 
    template_name = 'template/view_template.html' 
    model = SomeModel 

    def get_context_data(self, **kwargs): 
     context = super(SpecialView, self).get_context_data(**kwargs) 
     context['content'] = SomeModel.objects.get(pattern=self.request.path) 
    return context 

은 토륨 해결책은 반 패턴인가? 그리고 그렇다면 왜? 감사합니다.

답변

1

예, 해결책은 반 패턴입니다. Django는 캡처 된 URL 패턴의 매개 변수를 지원하며 해당 뷰에서 사용할 수있게됩니다. 이러한 URL 매개 변수를 사용하면 데이터베이스의 특정 유형에 대한 모든 레코드에 대해 단일 URL 패턴을 작성하고 유지 관리 할 수 ​​있습니다.

URL 매개 변수 this example을 살펴보십시오.

마지막으로 데이터베이스의 크기에 따라 수백만 개의 URL 패턴을 만들 가능성이 있으므로 솔루션의 성능이 저하 될 수 있습니다.

+0

답변 해 주셔서 감사합니다. – Greg

+0

기꺼이 도와 드리겠습니다! – ndmeiri