كيفية تخصيص عنوان URL من الآراء العامة القائمة على التاريخ؟

StackOverflow https://stackoverflow.com/questions/1848565

سؤال

هنا نمط عنوان URL الخاص بي:

news_info_month_dict = {
    'queryset': Entry.published.filter(is_published=True),
    'date_field': 'pub_date',
    'month_format': '%m',
}

و

(r'^(?P<category>[-\w]+)/(?P<year>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})/(?P<slug>[-\w]+).html$', 
    'object_detail', news_info_month_dict, 'news_detail'),

لكن لديهم خطأ يحب هذا:

object_detail() got an unexpected keyword argument 'category'

ساعدني من فضلك. شكرا!

هل كانت مفيدة؟

المحلول

أعتقد أنك سوف تضطر إلى كتابة وجهة نظرك الخاصة بدلا من عام object_detail, ، شيء مثل هذا (غير مختبر)

import datetime

def view_entry(request, category, year, month, day, slug):
    date = datetime.date(int(year), int(month), int(day))
    entry = get_object_or_404(Entry, slug=slug, date=date, is_published=True, category=category)
    return render_to_response('news_detail', {'object': entry})

على الرغم من أنه قد يكون من الممكن القيام بذلك object_detail أنا لا أعرف - أنا نادرا جدا استخدام وجهات النظر العامة.

نصائح أخرى

في URL Regex الخاص بك، كل شيء في <brackets> يتم تمريره إلى العرض العام كوسيطة الكلمات الرئيسية.

المشكلة هي أن العرض العام الذي تستخدمه (object_detail) لا يدعم كل هذه الحجج (وهي، category).

مزيد من المعلومات حول وجهة نظر Object_Detail العامة والحجج التي يقبلها.

إذا كنت بحاجة إلى category حجة، فقط لف وجهة النظر كما اقترح نيك أعلاه واتصل بذلك من Urlconf الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top