Django models.SlugField()
है जो हमें कुछ अच्छे दिखने वाले यूआरएल बनाने में मदद करता है। मेरा प्रश्न है कि क्यों एक क्षेत्रDjango में SlugField() क्यों?
लगता है मैं इस मॉडल के रूप में यह निर्दिष्ट करने
class Blog(models.Model):
title = models.CharField()
और अगर मैं स्लग जोड़ना चाहते हैं, मैं सिर्फ
class Blog(models.Model):
title = models.CharField()
def title_slug(self):
return slugify(self.title)
यूआरएल में इस्तेमाल कर सकते हैं मैं सिर्फ
(r'^blog/(?P<id>\d+)/(?P<slug>[-\w]+)/$', 'app.views.blog_view'),
का उपयोग कर सकता था
और में देखा गया
def blog_view(request, id ,slug):
get_object_or_404(Blog, pk=id)
...
यूआरएल की तरह
example.com/blog/23/why-iam-here/ दिखेगा
वहाँ तीन बातें हैं कि बनाता है मुझे इस विधि को अपनाना
- स्लग फ़ील्ड es विशिष्ट विशिष्टता के साथ आता है।
get_object_or_404(Blog, pk=id)
get_object_or_404(Blog, slug=slug)
से तेज़ होना चाहिए।- मौजूदा मॉडलों में एक स्लग फ़ील्ड जोड़ना डेटा माइग्रेशन शामिल है।
तो क्यों SlugField()? , गतिशील रूप से स्लग उत्पन्न करने की लागत के अलावा, उपर्युक्त विधि के नुकसान क्या हैं?
स्टैक ओवरफ्लो एक रीडायरेक्ट का उपयोग करता है (और मुझे यह पसंद है): http://stackoverflow.com/questions/17495299/this-will-be-replaced आपका स्वागत है! – allcaps
मैं कहूंगा कि स्लग बेकार है यदि आप एक ही चीज़ को दो बार लिखने की योजना नहीं बना रहे हैं या यदि आप वास्तव में असंगतता की परवाह नहीं करते हैं। प्रसंस्करण शक्ति की बचत? यह वास्तव में यूआरएल उत्पन्न करने के लिए कुछ भी नहीं है और यह आपके डेटाबेस में एक अनावश्यक कॉलम के लिए अधिक परेशान है। मैं वास्तव में इस स्लग के बिंदु को नहीं देखता() –