Что такое & ldquo; slug & rdquo; в Джанго?

SQL исходит из реляционной алгебры .

. Один из способов взглянуть на разницу заключается в том, что JOINs - это операции над наборами, которые могут создавать больше записей или меньше записей в результате, чем вы в исходных таблицах. С другой стороны, ГДЕ всегда будет ограничивать количество результатов.

Остальная часть текста является дополнительным объяснением.


Для просмотра типов соединений см. Статью / g1].

Когда я сказал, что условие where всегда будет ограничивать результаты, вы должны принять во внимание, что, когда мы говорим о запросах на две (или более) таблицы, вам нужно как-то пара записи из этих таблиц, даже если ключевое слово JOIN отсутствует.

Итак, в SQL, если таблицы просто разделены запятой, вы фактически используете CROSS JOIN (декартово произведение), которое возвращает каждую строку из одной таблицы для каждой строки в другой.

И так как это максимальное количество комбинаций строк из двух таблиц, то результаты любого ГДЕ на перекрестно соединенных таблицах могут быть выражены как операция JOIN.

Но удерживайте, есть исключения из этого максимума, когда вы вводите объединения LEFT, RIGHT и FULL OUTER.

LEFT JOIN присоединяется к записям из левой таблицы по заданному критерию wit h записей из правой таблицы, НО, если критерии соединения, глядя на строку из левой таблицы, не удовлетворяются для любых записей в правой таблице, LEFT JOIN по-прежнему будет возвращать запись из левой таблицы и в столбцах, которые будут появляться из правой таблицы он вернет NULL (RIGHT JOIN работает аналогично, но с другой стороны, FULL OUTER работает так же, как и в то же время).

Поскольку перекрестное соединение по умолчанию НЕ возвращает эти записи, вы не можете выражайте эти критерии соединения с условием WHERE, и вы вынуждены использовать JOIN-синтаксис (оракул был исключением из этого с расширением стандарта SQL и оператором = =, но это не было принято другими поставщиками или стандартом).

Кроме того, объединения обычно, но не всегда, совпадают с существующей ссылочной целостностью и предлагают отношения между сущностями, но я не придавал бы такого большого значения этому, поскольку условия, где условия могут делать то же самое (за исключением случая, упомянутого выше), и к хорошей СУБД, это не сделает разница, в которой вы указываете свои критерии.

503
задан Peter Mortensen 23 March 2015 в 18:55
поделиться

5 ответов

Это - способ генерировать допустимый URL, обычно с помощью данных, уже полученных. Например, с помощью заголовка статьи для генерации URL. Я советовал бы, чтобы генерировать краткий заголовок, с помощью функции, учитывая заголовок (или другая часть данных), вместо того, чтобы установить его вручную.

пример:

<title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>

Теперь позволяют нам притвориться, что у нас есть модель Django, такая как:

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)

, Как Вы сослались бы на этот объект с URL с понятным именем? Вы могли использовать Article.id, таким образом, URL будет похож на это:

www.example.com/article/23

Или, Вы могли сослаться на заголовок как так:

www.example.com/article/The 46 Year Old Virgin

проблема, пробелы не допустимы в URL, они должны быть заменены %20, который ужасен, делая ее следующим:

www.example.com/article/The%2046%20Year%20Old%20Virgin

Это не решает наш значимый URL. Не был бы это быть лучше:

www.example.com/article/the-46-year-old-virgin

Это - краткий заголовок. the-46-year-old-virgin. Все буквы являются downcased, и пробелы заменяются дефисами -. Посмотрите URL этой очень веб-страницы для примера!

647
ответ дан itsjeyd 23 March 2015 в 18:55
поделиться

Как немного истории, термин 'краткий заголовок' прибывает из мира газетного редактирования.

Это - неофициальное имя, данное истории во время производственного процесса. Поскольку история проветривает свой мучительный путь от генератора отчетов удара до редактора до "печатных станков", это - имя, этим ссылаются, например, "Вы зафиксировали те ошибки в 'russia-cuts-europe-gas' история?".

Django использует его в качестве части URL для определения местоположения истории, пример, являющийся www.mysite.com/archives/russia-cuts-europe-gas.

51
ответ дан paxdiablo 23 March 2015 в 18:55
поделиться

Это - описательная часть URL, который является там для создания его более человеческим описательный, но обязательно не требуясь веб-сервером - в , Что является " slug" в Django? краткий заголовок является 'in-django-what-is-a-slug', но краткий заголовок не используется для определения , страница служила (на этом сайте, по крайней мере)

16
ответ дан Community 23 March 2015 в 18:55
поделиться

От здесь .

“Slug” является газетным термином, но что это означает, вот заключительный бит URL. Например, сообщение с заголовком, бит “A о Django” станет, “bit-about-django” автоматически (можно, конечно, изменить его легко если Вы don’t как автоматически сгенерированный краткий заголовок).

21
ответ дан BobbyShaftoe 23 March 2015 в 18:55
поделиться

Если я могу представить некоторый исторический контекст:

Термин «пуля» имеет отношение к отливке металла - в данном случае свинца - из которого пресс шрифты были сделаны. Затем каждая бумага имела свою фабрику шрифтов, которая регулярно переплавлялась и переделывалась в новые формы, поскольку после многих отпечатков они изнашивались. Такие ученики, как я, начали свою карьеру там и дошли до вершины (больше нет).

Типографам приходилось составлять текст статьи в обратном порядке, при этом ведущие символы располагались в определенном порядке. Так что во время печати буквы будут прямо на бумаге. Все типографы могли читать газету с такой же скоростью, как и печатная. Поэтому слизней (как улиток), а также медленных историй (которые исправляли последними) было много на скамейке в ожидании, идентифицируемых исключительно по их первым буквам, в основном весь заголовок в целом более читабельный. Некоторые "горячие" новости ждали там, на скамейке, для возможного исправления в последнюю минуту (Вечерняя газета) перед последним собранием и окончательной печатью.

Джанго вышел из офиса журнала Лоуренс в Канзасе. Где, вероятно, еще сохранился какой-то печатный жаргон. А-джанго-энтузиаст - & - дружелюбный-старый-слизняк-из-Франции.

119
ответ дан 22 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: