python - django如何一个url绑定多个视图
PHP中文网
PHP中文网 2017-04-18 09:13:26
0
2
435

问题很简单,我有2个url规则,但是可能会有冲突

url(r'^(?P<category>\w+)/$',
            CategoryView.as_view(), name='category-detail-view'),


url(r'^(?P<url>\w+)/$',CustomView.as_view(),name="custm"),

简单的看来就是这样的,这2条url,其实目的的是一样,为了访问
www.baidu.com/xxx/ 这样的分类,只是有一个是自定页面.
这样设置不行,只能取其中一个.

我想问问, django有没有办法让同一个url规则绑定多个不同的视图? 这样就很灵活了~

PHP中文网
PHP中文网

认证0级讲师

membalas semua(2)
左手右手慢动作

Jika corak url boleh diikat kepada berbilang paparan, saya rasa Django tidak tahu cara mengendalikan permintaan ini (pandangan mana yang harus dihantar kepadanya).

Tetapi masalah anda sekarang ialah:

URL berbeza yang sepadan dengan corak yang sama memerlukan pemprosesan berbeza

Ini kedengaran aneh. Jika ini berlaku, ini mungkin bermakna corak anda tidak sepatutnya ditulis seperti ini. Anda harus cuba membahagikan corak url asal kepada berbilang corak yang boleh dibezakan.

Sudah tentu, kemungkinan besar corak url sukar dipisahkan Dalam contoh anda, memang sukar untuk dibezakan:

(domain name)/category1/

dan

(domain name)/www.google.com.tw/

Oleh kerana corak yang diekstrak daripada kedua-dua URL ini pada asasnya betul-betul sama seperti yang anda katakan.

Berikut adalah beberapa pendekatan yang mungkin:

  1. Jika tidak terdapat banyak kategori, anda boleh pertimbangkan untuk membahagikan terus bahagian kategori untuk menulis corak url

  2. Gunakan corak url, tetapi mula-mula gunakan paparan bersatu untuk pemprosesan, dan kemudian majukannya kepada paparan berbeza untuk diproses mengikut parameter yang dipintas dalam url


Kesimpulan:

Parameter pemintasan URL hanya untuk keperluan ini:

Bentuk corak url yang sama mesti boleh mengendalikan pelbagai url yang sepadan dengan corak tetapi sebenarnya berbeza

伊谢尔伦
# get_all_categories() 获取所有分类
category_pattern = '|'.join([category for category in get_all_categories()])

url(r'^(?P<category>%s)/$' % category_pattern, CategoryView.as_view(), name='category-detail-view'),

url(r'^(?P<url>\w+)/$',CustomView.as_view(),name="custm"),
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan