Django ссылается прямо на шаблон html

Изучение django & python.

Просто создайте новый сайт после выполнения этого урока. Теперь для аргументов ради скажу, что я хочу добавить кучу «О нас», часто задаваемые основные страницы html с очень ограниченными динамическими элементами, и продолжайте писать новую строку в моем файле urls.py для каждой страницы? или их какой-то опрятный способ сказать карту все * * .html в соответствующий .html-файл напрямую?

В общем, даже если для этого требуется представление, мне нужно написать новую строку в файле url.py для каждой страницы?

  • Как проверить параметры URL в приложении Flask?
  • Ограничения Python по сравнению с Ruby: lambda's
  • paramiko.Proxycommand не удается установить сокет
  • pandas merge dataframe заполняет отсутствующие значения
  • Pandas: boxplot из одного столбца на основе другого столбца
  • Ошибка использования обратного вызова в Python
  • Django / gevent socket.IO с redis pubsub. Где я могу поместить вещи?
  • Что называется этим назначением в Python? a = b = True
  • 5 Solutions collect form web for “Django ссылается прямо на шаблон html”

    Пока в URL-адресе есть какой-то уникальный идентификационный раздел, вам не нужно будет создавать запись в urls.py для каждого URL-адреса прямого шаблона.

    Например, вы можете сказать, что все URL-адреса, заканчивающиеся на «.html», ссылаются на прямой файл из шаблонов.

    urlpatterns = patterns('django.views.generic.simple', (r'(.+\.html)$', 'direct_to_template'), # ... ) 

    Взгляните на http://docs.djangoproject.com/en/1.2/ref/generic-views/#django-views-generic-simple-direct-to-template для деталей.

    Напишите URL-адрес, который захватывает статические страницы, которые вам интересны

     url(r'^(?P<page_name>about|faq|press|whatever)/$', 'myapp.staticpage', name='static-pages') 

    Функция просмотра staticpage в myapp

     from django.views.generic.simple import direct_to_template from django.http import Http404 def staticpage(request, page_name): # Use some exception handling, just to be safe try: return direct_to_template(request, '%s.html' % (page_name, )) except TemplateDoesNotExist: raise Http404 

    Конечно, вам нужно следовать правилам именования для ваших шаблонов, но этот шаблон можно расширить по мере необходимости.

    Это лучше, чем шаблон .+\.html , потому что он будет обрабатывать шаблоны, которые не существуют как 404, тогда как .+\.html взорвет 500 ошибок, если шаблон не существует.

    В настоящее время лучший способ сделать это – использовать TemplateView из общих представлений на основе классов:

     url(r'^$', TemplateView.as_view(template_name='index.html'), name='home'), 

    Если вы используете представления, основанные на классе, потому что direct_to_template устарел , вы можете создать простую оболочку, которая отображает ваши собственные шаблоны напрямую:

     from django.views.generic import TemplateView from django.template import TemplateDoesNotExist from django.http import Http404 class StaticView(TemplateView): def get(self, request, page, *args, **kwargs): self.template_name = page response = super(StaticView, self).get(request, *args, **kwargs) try: return response.render() except TemplateDoesNotExist: raise Http404() 

    и в вашем маршрутизаторе:

     from myapp.static.views import StaticView urlpatterns = patterns('', url(r'^(?P<page>.+\.html)$', StaticView.as_view()), # ... ) 

    Один из способов сделать это – написать одно настраиваемое представление, которое обертывает общее представление direct_to_template . Обертка может принимать параметр и, соответственно, формировать имя шаблона и передавать его на direct_to_template . Таким образом, вы можете маршрутизировать несколько страниц с одной конфигурацией URL.

    Что-то вроде этого:

     url(r'^foo/(?P<page_name>\w+).html$', 'my_static_wrapper', name = 'my_static_wrapper'), def my_static_wrapper(request, page_name): # form template name and call direct_to_template 

    Тем не менее, я подозреваю, что есть более эффективные решения.

    Python - лучший язык программирования в мире.