Django urlのネーミングスペースurlの逆解析
2839 ワード
使用方法1:
簡単なニーズ:ブログのホームページの右側にすべての文章の分類をリストし、対応する分類をクリックすると、この分類の下のすべての文章をリストします.
この場合,url逆解析,Djangoにおけるビュー関数ネーミング空間技術を用いる必要がある.
具体的なコード実装はurlsである.pyでapp_を宣言name:
htmlで
category関数の実装は、次のとおりです.
使用法2:
モデルデータテーブルクラスでreverseメソッドを定義するには、次の手順に従います.
まずindex関数は、データベースから取得した文書リストオブジェクトを返します.
indexでhtml内
タイトルをクリックすると、Postクラスのget_を呼び出すabsolute_urlメソッド、このメソッドのreverse関数の逆解析
blogネーミングスペースのdetailという名前の解析アイテムを呼び出します.
文章の詳細を返すページはmarkdown構文解析をサポートする.
簡単なニーズ:ブログのホームページの右側にすべての文章の分類をリストし、対応する分類をクリックすると、この分類の下のすべての文章をリストします.
この場合,url逆解析,Djangoにおけるビュー関数ネーミング空間技術を用いる必要がある.
具体的なコード実装はurlsである.pyでapp_を宣言name:
app_name = 'blog'
の後、urlマッチングにnameパラメータを追加します.url(r'^category/(?P[0-9]+)/$', views.category, name='category'),
category/数値を一致させることができますhtmlで
blogネーミングスペースのcategoryという名前の一致項目をviewsの下のcateory関数に一致させ、category.pkパラメータはcategory関数に渡されるcategory関数の実装は、次のとおりです.
def category(request, pk):
cate = get_object_or_404(Category, pk=pk) #
post_list = Post.objects.filter(category=cate).order_by('-create_time')
return render(request, 'blog/index.html', context={'post_list':post_list})
データベースから取得する値に基づいてindexを再レンダリングする.htmlテンプレートは、この分類のすべての文章を手に入れます.使用法2:
モデルデータテーブルクラスでreverseメソッドを定義するには、次の手順に従います.
class Post(models.Model):
#
title = models.CharField(max_length=70)
... ...
#'blog:detail', blog name=detail
# reverse URL, detail post/(?P[0-9]+)/ ,
# pk
def get_absolute_url(self):
return reverse('blog:detail', kwargs={'pk': self.pk})
まずindex関数は、データベースから取得した文書リストオブジェクトを返します.
def index(request):
#order_by queryset 。 created_time, 。-
post_list = Post.objects.all().order_by('-create_time')
return render(request, 'blog/index.html', context={'post_list':post_list})
indexでhtml内
{% for post in post_list %}
{{ post.title }}
... ...
タイトルをクリックすると、Postクラスのget_を呼び出すabsolute_urlメソッド、このメソッドのreverse関数の逆解析
blogネーミングスペースのdetailという名前の解析アイテムを呼び出します.
url(r'^post/(?P[0-9]+)/$', views.detail, name='detail'),
は最終的にviewsを呼び出す.detail関数def detail(request, pk):
post = get_object_or_404(Post, pk = pk) # models reverse pk
post.body = markdown.markdown(post.body,
extensions=[
'markdown.extensions.extra',
'markdown.extensions.codehilite',
'markdown.extensions.toc',
])
return render(request, 'blog/detail.html', context={'post':post})
文章の詳細を返すページはmarkdown構文解析をサポートする.