Джанго URL-адрес конф - PullRequest
0 голосов
/ 26 июля 2010

Так что я немного поработал с Django и пойму элементарное выражение.

Я знаю, что если есть запрос, он "отображает" (не уверен, что это означает) URL-адреса определенного определения в представлении.

Это ясно и понятно для одной страницы. Но что, если я хочу создать шаблон URL для нескольких страниц и / или всего сайта? Я не понимаю эту часть.

Есть ли способ сделать это без регулярных выражений? Если нет: как создать надежную структуру с помощью регулярных выражений? Где я могу, чем быстро добавлять и удалять страницы.

Чем плоские страницы отличаются от других страниц в этом отношении?

Если это возможно и разумно, я хотел бы добиться следующего с помощью моего urls.py?

.
  1. Плоские страницы для обычных сайтов, которые нужны сайту:

Home Около Средства массовой информации , , , Контакты

  1. Динамически создаваемые сайты, похожие на Webgallery (но не такие)

Где на первом сайте у меня есть текст и несколько флажков. Затем на каждой странице есть один элемент мультимедиа со следующей кнопкой.

URL-адреса могут выглядеть следующим образом

MyApp / старт /

, а затем

myapp / start / 1 до n

А myapp / находится в главной навигации и на плоской странице.

Я привык делать статические страницы, и я почему-то не понимаю, как я могу получить структуру на этих разных страницах. Кажется, что плоские страницы статичны. Так что я могу с ними легче работать. Но, возможно, позже я столкнусь с проблемами при использовании этого подхода.

Если бы был какой-то отличный способ быстро понять регулярные выражения или как создать структуру сайта в Django: Скажите, пожалуйста.

Спасибо !!

Ответы [ 2 ]

2 голосов
/ 26 июля 2010

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

так, для вашего случая, у вас может быть что-то похожее на

(r'^myapp/$', 'myapp.show_main_navigtaion_page'), # if the url is "myapp/" only, show main nav
(r'^articles/start/$', 'myapp.show_start_page'),
(r'^articles/start/(\d+)/$', 'myapp.do_something_with_start'),

некоторые базовые регулярные выражения здесь: Символ «^» означает начало URL, «$» означает конец строки, символы "()" фиксируют то, что находится внутри них, «\ d +» соответствует одному или нескольким числам.

1 голос
/ 26 июля 2010

Вы должны разделить свои URL в приложениях:

urlpatterns = patterns('',
    (r'^accounts/', include('my.accounts.urls')),
    (r'^gallery/', include('my.gallery.urls')),

И затем вы можете создавать структуры с помощью регулярных выражений:

urlpatterns = patterns('my.gallery.views',
    (r'^photos/new/$', 'photo_new'),
    (r'^photos/$', 'photo_list'),
    (r'^photos/by_user/(?P<user_id>\d+)/$', 'photo_list'), # capture (\d+) into user_id variable
    (r'^photos/by_category/(?P<cat_id>\d+)/$', 'photo_list'),
)

Я использую photo_list три раза, потому что он принимает необязательные аргументы (user_id и cat_id). Это выглядит так:

def photo_list(request, cat_id=None, user_id=None):
if cat_id is not None:
    c = get_object_or_404(Category, pk=cat_id)
    q = c.photo_set.all()
elif user_id is not None:
    u = get_object_or_404(User, pk=user_id)
    q = u.photo_set.all()
else:
    q = Photo.objects.all()
return render_response(request, "gallery/photo_list.html",{
    "photos":q})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...