rest_framework筆記: 使用url無法獲取到url的地址

我遇到的問題,和這個(gè)外國人問題一樣,因?yàn)閍pp有名字,導(dǎo)致restframework使用HyperlinkedModelSerializer ,里面的url不成功。

他的地址是:https://stackoverflow.com/questions/18231887/model-field-named-url-and-django-rest-framework-url

My serializers.py file:


classSnippetSerializer(serializers.HyperlinkedModelSerializer):

owner=serializers.ReadOnlyField(source='owner.username')

highlight=serializers.HyperlinkedIdentityField(view_name='snip:snippet-highlight', format='html')

#url = serializers.SerializerMethodField('get_snippet_url')

#url=serializers.HyperlinkedIdentityField(view_name='snip:snippet-detail')

classMeta:

model=Snippet

fields=('url','title','code','linenos','language','style','owner','highlight')

# def get_snippet_url(self, obj):

#? ? # generate the url for the key

#? ? url = reverse('snip:snippet-detail')

我的項(xiàng)目根url:

url(r'^snip/', include('snippets.urls', namespace='snip'))


我的app的url:

urlpatterns=format_suffix_patterns([

url(r'^$',api_root),

url(r'^snippets/$',SnippetList.as_view(), name='snippet-list'),

url(r'^snippets/(?P[0-9]+)/$',SnippetDetail.as_view(),name='snippet-detail'),

url(r'^snippets/(?P[0-9]+)/highlight/$',SnippetHighlight.as_view(),name='snippet-highlight'),

url(r'^users/$', UserList.as_view(),name='user-list'),

url(r'^users/(?P[0-9]+)/$', UserDetail.as_view(),name='user-detail'),

])

這樣每次,都是告訴我無法找到snippet-detail.

解決辦法:


url=serializers.HyperlinkedIdentityField(view_name='snip:snippet-detail')


筆記:

如果我們創(chuàng)建了一個(gè)基于超鏈接的API,我們需要確保每個(gè)URL都被命名了。讓我們看看那些需要被命名的URL:

1.根URL包含'user-list'和'snippet-list'

2.snippet serializer包含指向'snippet-highlight'的字段

3.user serializer包含指向'snippet-detail'的字段

4. snippet serializers和user serializers 包含'url'字段,這個(gè)字段默認(rèn)指向'{model_name}-detail',這里分別是'snippet-detail'和'user-detail'

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Django: csrf防御機(jī)制 csrf攻擊過程 1.用戶C打開瀏覽器,訪問受信任網(wǎng)站A,輸入用戶名和密碼請(qǐng)求登...
    lijun_m閱讀 1,090評(píng)論 0 0
  • Tutorial 1: Serialization 序列化 安裝基本環(huán)境 開始 創(chuàng)建測試環(huán)境 創(chuàng)建一個(gè) djang...
    Passon_Fang閱讀 4,251評(píng)論 2 8
  • 前言 本文標(biāo)題為實(shí)戰(zhàn),那么希望你已經(jīng)搭建好了環(huán)境。如果沒有,請(qǐng)參考官方文檔進(jìn)行環(huán)境搭建: 官方教程 通過學(xué)習(xí)這個(gè)例...
    CSU_IceLee閱讀 5,220評(píng)論 6 12
  • 你不喜歡我,那是你的事,和我無關(guān)。 我高興,我的心情是由自己來控制 沒必要,看你臉色來行事! 尊敬你,我的素質(zhì)!
    幸福小ying子閱讀 102評(píng)論 0 0
  • ios 7 之后系統(tǒng)集成了二維碼 所以ios 7 之前的zbarsdk 不支持64為處理器1 導(dǎo)入CoreImag...
    cj小牛閱讀 688評(píng)論 0 3