2010-02-26 9 views
5

Bir video sitesi oluşturuyorum. Doğrudan videolarımın bir videonun example.com/watch/this-is-a-slug-1 gibi görünmesini istiyorum, burada 1 video kimliğidir. Yine de sümüğün maddeyi istemiyorum. example.com/watch/this-is-another-slug-1 aynı sayfaya işaret etmelidir. SO üzerinde,/soru/kimlik önemli olan URL'nin tek parçasıdır. Bunu nasıl yapabilirim?Django'da stackoverflow'a benzer URL'leri nasıl yapabilirim?

cevap

8

yığın taşması formu işlemek daha kolaydır

example.com/watch/1/this-is-a-slug 

kullanır. ID'nin sümüklü jetonun sonunda olmasını istiyorsanız, solucan bir kutu açıyorsunuz, çünkü o zaman ne tür sümüklü böceklerin kullanabileceğini kısıtlıyorsunuz, ya da sadece kendinize daha da zorlaştırıyorsunuz.

Sen gibi bir URL işleyicisi kullanabilirsiniz:

(r'^watch/(?P<id>\d+)/', 'watch') 

yalnızca kimliği kapmak ve kimliği sonra şey görmezden. (Not: $ satır sonu karakteri yoktur.)

+0

Hmm, bu tavsiye için teşekkürler. Örnek.com/watch/1-this-is-a-slug ise kimliği almak zor mu olurdu? Ayrıca, eğer bu sorular aptalca görünüyorsa özür dilerim! Bu sadece tasarlamak ve düzenlemek yerine aslında geliştirdiğim ilk site. Yardımlarınız için teşekkürler. –

+0

@Matt, bu zor olmaz, ama neden yapmak istiyorsun? Stack Overflow'un yaptığı şeyi yapmak oldukça standart bir uygulamadır. –

+0

Bunu neden yapmak istediğimi kesinlikle emin değilim./Id/slug kabul edilebilir ise, bunu yapacağım. Tekrar teşekkürler. –

-3

Stackoverflow'a olan tüm saygımla, bunun yanlış yolu budur. URL'de sayfayı tanımlayan iki öğeye sahip olmanız gerekmemelidir. Kimlik alakasız - bu önemsiz. Bir sayfayı tek başına sümükten ayırt edebilmelisiniz.

+4

Yinelenen başlıklar nedir? Ya da karakterlerin sadece sümüklü böceklerden uzaklaşması mı? "C++ Pointers" ve "C'deki Pointers" başlıklı soruların her ikisi de aynı sümüklü olsun, varolan bir unvanla bir soru oluşturmak imkansız olabilir veya eski soruya erişilemez. Kimlik, benzersiz bir tanımlayıcıdır ve sümük, insan/arama motoru/vb. –

0

Django kullanmadıysanız ama daha önce MVC çerçeveler kullandım. Genelde, bir denetleyiciyle eşlenen bir deseni (genellikle düzenli bir ifade) tanımlamanıza olanak veren bir çeşit URL yönlendirme özelliğine sahiptir.

Bu başlamak için iyi bir yer olabilir: http://docs.djangoproject.com/en/dev/topics/http/urls/

Jesse Beder belirtildiği gibi, ileriye daha sonra ilk URL segmenti (/ watch) ve sayısal ID ve maç için düzenli ifade ihtiyaç sadece düşüncesi doğrultusunda Kimliği ile uğraşmak ve sümüklügü ihmal edecek bir saat denetleyicisi.