Поскольку этот поток наткнулся, я собрал несколько точек для новых читателей в this
.
this
? Мы используем это подобно тому, как мы используем местоимения в естественных языках, таких как английский: «Джон работает быстро, потому что он пытается поймать поезд». Вместо этого мы могли бы написать «... Джон пытается поймать поезд ».
var person = {
firstName: "Penelope",
lastName: "Barrymore",
fullName: function () {
// We use "this" just as in the sentence above:
console.log(this.firstName + " " + this.lastName);
// We could have also written:
console.log(person.firstName + " " + person.lastName);
}
}
this
не присваивается значение, пока объект не вызовет функцию, в которой он определен. В глобальной области действия все глобальные переменные и функции определяются на объекте window
. Следовательно, this
в глобальной функции относится к (и имеет значение) глобальный объект window
.
Когда use strict
, this
в глобальном и в анонимных функциях, не связанных с каким-либо объектом, имеет значение undefined
.
Ключевое слово this
g0] наиболее непонятно , когда: 1) мы используем метод, который использует this
, 2) мы назначаем метод, который использует this
для переменной, 3) функция, которая использует this
, передается как функция обратного вызова и 4) this
используется внутри замыкания - внутренней функции. (2)
[/g10]
Определено в сценарии ECMA 6 , стрелка- функции принимают привязку this
из охватывающей (функциональной или глобальной) области.
function foo() {
// return an arrow function
return (a) => {
// `this` here is lexically inherited from `foo()`
console.log(this.a);
};
}
var obj1 = { a: 2 };
var obj2 = { a: 3 };
var bar = foo.call(obj1);
bar.call( obj2 ); // 2, not 3!
Хотя функции-стрелки предоставляют альтернативу использованию bind()
, важно отметить, что они по существу отключают традиционный механизм this
в пользу более широкого понимания лексического охвата. (1)
Ссылки:
редактировать : краткость и уточнение ответа
В вашем случае строка urlpatterns += url(r'', include('wiki.urls'))
добавляет URL-путь для Django, чтобы оценить для какого-то приложения «вики». Исходный код для файла urls.py, если кто-то еще смотрит на этот вопрос, это здесь .
В wiki.urls.py
# line 51
def get_urls(self):
... # gets the root urls & adds all other url patterns
return urlpatterns
# line 249
def get_pattern(app_name="wiki", namespace="wiki", url_config_class=None):
... # warnings etc...
if url_config_class is None:
url_config_classname = getattr(settings, 'URL_CONFIG_CLASS', None)
if url_config_classname is None:
url_config_class = WikiURLPatterns
else:
... # more warning etc...
url_config_class = import_string(url_config_classname)
urlpatterns = url_config_class().get_urls()
return urlpatterns, app_name, namespace
и в wiki.conf.settings мы находим
]# line 273
#: Dotted name of the class used to construct urlpatterns for the wiki.
#: Default is wiki.urls.WikiURLPatterns. To customize urls or view handlers,
#: you can derive from this.
URL_CONFIG_CLASS = getattr(
django_settings,
'WIKI_URL_CONFIG_CLASS',
None)
Итак, вы действительно нашли правильный файл (src.wiki.urls.py). Из приведенных выше сегментов видно, что conf.settings по умолчанию определяет URL_CONFIG_CLASS как None
. Затем if None
url conf определяет класс как WikiURLPatterns (строка 249) и включает в себя URL-адреса, определенные в get_urls (строка 51). Здесь, в get_urls (и предыдущих строках), вы захотите добавить свой собственный код в другие шаблоны URL, представления и приложения.
Однако, эти настройки становятся устаревшими, см. здесь в документации. Итак, копаясь в Git для проекта, вы можете увидеть, что они переопределили это для современного Django. Итак, в wiki.sites.py смотрите строку 75 и далее, чтобы узнать, как создаются экземпляры URL.
Вы также спросили, где была регистрация? Проверьте строку 94 в wiki.sites.py