Я пытаюсь использовать одно приложение, чтобы удовлетворить несколько путей URL. То есть я хочу, чтобы URL /blog/
и /job/
использовали одно и то же приложение, но разные представления. Уверен, есть несколько способов сделать это, но ни один из них не кажется очень чистым. Вот что я сейчас делаю
# /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 %}
вызовы шаблона.
Изначально у меня были блоги, рабочие места, события, конкурсы и т. Д., Все они жили в своих собственных приложениях, но все их функции были настолько похожи, что не было смысла оставлять это таким образом, поэтому я попытался объединить их ... и это случилось. Вы видите эти URL-адреса "NOIDEA-detail" и "NOIDEA-community" на моих общих взглядах? Да, я не знаю, что там использовать: - (