我只是在 Django 1.11 中处理一个项目。我对如何制作 url 的通用开头有疑问。例如,创建团队后,所有成员的地址应如下所示:
domain.com/name_of_team
domain.com/name_of_team/blog
domain.com/name_of_team/blog/title_of_post
项目中的主 url 文件:
urlpatterns = [
url(r'', include('blog.urls', namespace='blog')),
url(r'^accounts/', include('accounts.urls', namespace='accounts')),
url(r'^admin/', admin.site.urls),
]
博客中的网址:
url(r'^$', login_required(RedirectToHome.as_view()), name='redirect_home'),
url(r'^t/(?P<pk>[0-9]+)/$', login_required(BlogHome.as_view()), name='blog_list'),
url(r'create/$', login_required(BlogCreate.as_view()), name='blog_create'),
url(r'^(?P<pk>[0-9]+)/delete/$', login_required(BlogDelete.as_view()), name='blog_delete'),
url(r'^(?P<pk>[0-9]+)/update/$', login_required(BlogUpdate.as_view()), name='blog_update'),
url(r'^(?P<pk>\d+)?/?$', login_required(BlogDetail.as_view()), name='blog_detail'),
也许有一些处理 url 地址的好做法?
为了使博客应用程序特定于每个团队,您可以包含它的 URL;
url(r'^(?P<team_slug>[\w-]+)/', include('blog.urls', namespace='blog')),
这显然假设您的Team
模型有一个slug
字段,以便您可以安全地将其添加到上下文中并使用它来形成blog
应用程序的 URL 。
然后Mixin
,您可以拥有一个可以由博客中的视图共享的视图,或者向共享的基本视图添加一些内容,该视图加载Team
from django.views.generic.base import ContextMixin
from .models import Team
class TeamMixin(ContextMixin):
def get_context_data(self, **kwargs):
context = super(TeamMixin, self).get_context_data(**kwargs)
context['team'] = Team.objects.get(slug=kwargs.get('team_slug'))
return context
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句