มีปัญหาในการทำให้ทากทำงานอย่างถูกต้องใน urls.py

ฉันมีปัญหา (อาจเกิดจากการขาดความรู้ในเรื่องนี้) กับการใช้ทากใน urls.py ของฉัน

Urls.py
url(r'^admin/', include(admin.site.urls)),
url(r'^search_form/$', search_form),
url(r'^search/$', search),
url(r'^search_results/$', search_results),
#url(r'^search/search_results/acetic-acid/$', item),
url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item),

นี่คือลิงก์ html href="/thsearch_results/{{chemical.S_field}}/">{{chemical.Barcode }} โดยที่ฟิลด์ Chemical.S_field slug โดยอ้างอิงจากชื่อรายการในเวอร์ชันที่มีกระสุน

ฉันกำลังพยายามสร้างเพจ URL และมุมมองที่จะสามารถนำผู้ใช้ไปยังเทมเพลตที่จะเปลี่ยนแปลงขึ้นอยู่กับลิงก์ที่พวกเขาคลิก

เช่น ถ้าคุณมีสุนัขขนดก แมวขน นกขนปุย หากผู้ใช้คลิกที่แมวขน ทากจะเป็นแมวขน และผู้ใช้จะถูกพาไปที่หน้า (ค้นหา/search_results/hairy-cats/ ซึ่งจะมีข้อมูลต่างๆ เกี่ยวกับแมวขนที่จะแสดงจากฐานข้อมูล

ฉันรู้สึกว่านี่เป็นสิ่งที่เป็นไปได้ แต่ทุกครั้งที่ฉันพยายามใช้กระสุน (บางทีฉันอาจทำไม่ถูกต้อง) มันจะแสดง ^(?P[-\w\d]+),(?P\d+)/$ ตรงกันข้ามกับข้อมูลที่เก็บไว้ในตัวบุ้ง

มีที่ไหนมีสอนหรือข้อมูลดีๆ เกี่ยวกับ django แบบนี้บ้างคะ? ฉันได้อ่านบทช่วยสอน django บนไซต์แล้ว และบทช่วยสอน django ใน Definitive Guide to Web Development with Django แล้ว

ขอบคุณ,

แก้ไข ฉันอาจไม่ชัดเจนมาก่อนควรเลือกตัวอย่างที่ดีกว่า หน้าที่ฉันต้องการให้แสดงจะอยู่ที่ search/search_results/slug โดยที่ slug จะเป็นชื่อรายการในเวอร์ชัน slugified นี่คือสิ่งที่ฉันได้รับตอนนี้ด้วยการเพิ่ม URL ใหม่ล่าสุด

Using the URLconf defined in Inventory.urls, Django tried these URL patterns, in   this order:

^admin/doc/
^admin/
^search_form/$
^search/$
^search_results/$
^(?P<slug>[-\w\d]+),(?P<id>\d+)/$
^(?P<slug>[-\w]+)/(?P<id>\d+)/$

The current URL, search/search_results/acetic-acid/, didn't match any of these.

person user2482595    schedule 26.06.2013    source แหล่งที่มา
comment
ฉันไม่เห็นรูปแบบ URL สำหรับผลลัพธ์ที่คุณต้องการ (search/search_results/hairy-cats/) ดูที่นี่เกี่ยวกับวิธีการทำงานของรูปแบบ URL: https://docs.djangoproject.com/en/dev/topics/http/urls/   -  person Jingo    schedule 26.06.2013


คำตอบ (2)


รูปแบบ URL นี้ไม่ถูกต้อง คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ใน กลุ่มที่มีชื่อ

url(r'^(?P<slug>[-\w\d]+),(?P<id>\d+)/$', item)

พยายาม

url(r'^(?P<slug>[-\w\d]+)/$', item)

เนื่องจากคุณพยายามจับคู่ทากเท่านั้น

หากคุณต้องการที่จะจับคู่ทากหรือ ID คุณสามารถมีเป้าหมายแยกกัน 2 เป้าหมายและแต่ละเป้าหมายคือ รูปแบบ URL ที่มีชื่อ

url(r'^(?P<id>\d+)/$', item, name='by-id')
url(r'^(?P<slug>[-\w\d]+)/$', item, name='by-slug')
person karthikr    schedule 26.06.2013
comment
ส่วนหนึ่งของปัญหาคือฉันมี url(r'^(?P‹slug›[-\w\d]+)/$', item) และสิ่งที่ฉันต้องการคือ url(r'^search/(?P‹ กระสุน›[-\w\d]+)/$', รายการ) - person user2482595; 26.06.2013

ลองสิ่งนี้:

url(r'^search/search_results/(?P<slug>[-\w]+)/$', item),

คุณจะมี URL เช่นนี้: search/search_results/acetic-acid/ ที่จะเรียกใช้รายการฟังก์ชัน

person Below the Radar    schedule 26.06.2013