Я пытаюсь использовать одно приложение для удовлетворения нескольких URL-адресов. То есть, я хочу, чтобы URL /blog/
и /job/
использовали одно и то же приложение, но разные виды. Есть несколько способов сделать это, я уверен, но ни один из них не кажется очень чистым. Вот что я делаю прямо сейчасКак использовать одно приложение для удовлетворения нескольких URL-адресов в Django
# /urls.py
urlpatterns = patterns("",
(r"^(blog|job)/", include("myproject.myapp.urls")),
)
# /myapp/urls.py
urlpatterns = patterns("myproject.myapp.views",
(r"^(?P<id>\d+)/edit/$", "myproject.myapp.views.edit"),
(r"^(?P<id>\d+)/delete/$", "myproject.myapp.views.delete"),
(r"^(?P<id>\d+)/update/$", "myproject.myapp.views.update"),
(r"^insert/$", "myproject.myapp.views.insert"),
)
urlpatterns += patterns("",
(r"^(?P<object_id>\d+)/$", "django.views.generic.list_detail.object_detail", info_dict, "NOIDEA-detail"),
(r"^/$", "django.views.generic.list_detail.object_list", info_dict, "NOIDEA-community"),
)
# /myapp/views.py
def edit(request, type, id):
if (type == "blog"):
editBlog(request, id)
else (type == "job")
editJob(request, id)
def editBlog(request, id):
# some code
def editJob(request, id):
# some code
Я в конечном итоге разбивая все это на несколько моделей и просматривать файлы, чтобы сделать чистый код, но приведенный выше пример не учитывает такие вещи, как обратный URL-адрес, который поисков ломает весь мой шаблон {% url %}
звонков.
Первоначально у меня были блоги, рабочие места, события, конкурсы и т. Д., Все из которых живут в собственных приложениях, но все их функции настолько схожи, что не имеет смысла оставлять их таким образом, поэтому я попытался объединить их ... и это произошло. Вы видите имена имен «NOIDEA-detail» и «NOIDEA-community» на моих общих представлениях? Да, я не знаю, что использовать там :-(