Подтвердить что ты не робот

Как использовать атрибут login_required в моем URL-адресе?

Я хочу проверить, разрешено ли пользователю определенные URL-адреса. Я использую общие представления.

Документы здесь говорят, что login_required можно передать как необязательные аргументы, но я не уверен. Что-то вроде этого может быть: (r'^$', 'archive_index', link_info_dict, 'coltrane_link_archive_index', login_required=True,),

У меня есть это, и я хотел бы иметь возможность использовать декоратор login_required в URL-адресе. Является ли это возможным? Как я могу это сделать?

from django.conf.urls.defaults import *

from coltrane.models import Link

link_info_dict = {
    'queryset': Link.live.all(),
    'date_field': 'pub_date',
}

urlpatterns = patterns('django.views.generic.date_based',
    (r'^$', 'archive_index', link_info_dict, 'coltrane_link_archive_index'),

    (r'^(?P<year>\d{4})/$', 'archive_year', link_info_dict, 'coltrane_link_archive_year'),

    (r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', link_info_dict, 'coltrane_link_archive_month'),

    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', link_info_dict, 'coltrane_link_archive_day'),

    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', link_info_dict, 'coltrane_link_detail'),

)


Например, как бы я защитил эту страницу здесь (нет представления, чтобы добавить атрибут login_Required в)?

(r'^$', 'django.views.generic.simple.direct_to_template', {
        'template': 'home.html'
    }, ),
4b9b3361

Ответ 1

Чтобы использовать декораторы в urls.py, вам нужно использовать реальные функции вместо своих имен:

from django.contrib.auth.decorators import login_required
import django.views.generic.date_based as views

urlpatterns = patterns('',
    (r'^$', login_required(views.archive_index), link_info_dict,
            'coltrane_link_archive_index'),
    ...

Ответ 3

Эти документы предназначены для общих представлений, которые работают несколько иначе, чем пользовательские представления. Обычно login_required используется для украшения вида; если вы хотите использовать его в urlconf, тогда вам нужно будет написать лямбду, чтобы обернуть представление.