Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 19, 2015 12:28:06

serrrgggeee
Зарегистрирован: 2014-03-31
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

формирование URL django

Здравствуйте пытаюсь выяснить как же формируется url django какие переменные передаются и какие функции вызываются по умолчанию вот наткнулся на вот этой функции

def resolve(self, path):
        path = force_text(path)  # path may be a reverse_lazy object
        tried = []
        match = self.regex.search(path)
        if match:
            new_path = path[match.end():]
            for pattern in self.url_patterns:
                try:
                    sub_match = pattern.resolve(new_path)
                except Resolver404 as e:
                    sub_tried = e.args[0].get('tried')
                    if sub_tried is not None:
                        tried.extend([pattern] + t for t in sub_tried)
                    else:
                        tried.append([pattern])
                else:
                    if sub_match:
                        sub_match_dict = dict(match.groupdict(), **self.default_kwargs)
                        sub_match_dict.update(sub_match.kwargs)
                        return ResolverMatch(
                            sub_match.func,
                            sub_match.args,
                            sub_match_dict,
                            sub_match.url_name,
                            self.app_name or sub_match.app_name,
                            [self.namespace] + sub_match.namespaces
                        )
                    tried.append([pattern])
            raise Resolver404({'tried': tried, 'path': new_path})
        raise Resolver404({'path': path})
а именно на вот этом фрагменте sub_match = pattern.resolve(new_path)
pattern pattern это for pattern in self.url_patterns тоесть циклический вызов url_patterns
@property
    def url_patterns(self):
        # urlconf_module might be a valid set of patterns, so we default to it
        patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
        try:
            iter(patterns)
        except TypeError:
            msg = (
                "The included urlconf '{name}' does not appear to have any "
                "patterns in it. If you see valid patterns in the file then "
                "the issue is probably caused by a circular import."
            )
            raise ImproperlyConfigured(msg.format(name=self.urlconf_name))
        return patterns
но метода resolve я тут не вижу, как я могу предположить он каким то образом компилится но пока не могу понять как.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version