Не е нужно да се мъчите, за да създадете охлюви в Django. Внедрете автоматично генериране на охлюви, за да спестите време и да рационализирате работния си процес.

Като уеб разработчик, оптимизирането на потребителското изживяване на вашето уеб приложение е от решаващо значение. За да подобрите потребителското изживяване и видимостта на търсачките, използвайте удобни за потребителя URL адреси с плужеци в Django. Създаването на URL адреси с охлузи е толкова лесно, колкото писането на функция, което ви позволява да генерирате кратки и описателни URL адреси, които са лесни за разбиране от потребителите и търсачките. Това подобрява използваемостта и достъпността, като същевременно повишава класирането в търсачките.

Примерите за код, използвани в тази статия, могат да бъдат намерени в това GitHub хранилище.

Създаване на Django проект

Django предоставя няколко метода за генериране на охлюви и използването им на вашия уебсайт. За да илюстрирате различни начини за внедряване на плужеци, този урок ще ви преведе през изграждането на просто уеб приложение за блог.

instagram viewer

Преди да настроите Django проект, създаване и активиране на виртуална среда за да инсталирате необходимите зависимости. След като активирате вашата виртуална среда, следвайте тези стъпки, за да настроите проекта си:

  • Инсталирайте Django, като използвате командата pip във вашия команден ред:
pip инсталирайте django
  • Създайте проект, като използвате django-admin полезност. Този урок ще използва project_core като име на проекта.
django-admin startproject project_core.
  • Създайте приложение с име рецепти.
python manage.py startapp рецепти
  • Добавете вашето приложение към инсталираните приложения във вашия проект настройка.py файл.
INSTALLED_APPS = [
'...'
'рецепти',
]
  • Стартирайте вашето приложение, като въведете следната команда в инструмента на командния ред:
python manage.py runserver
  • Навигирайте до http://127.0.0.1:8000/ във вашия браузър. Трябва да видите тази страница:
  • Конфигурирайте URL шаблона във вашия проект urls.py файл
от django.urls импортиране път, включват

urlpatterns = [
'...',
път ('', включете ('recipes.urls'))
]

Създаване на Slug в Django

За да генерирате slug в Django, трябва да включите поле slug във вашите модели. Следвайте тези стъпки, за да създадете плужек в Django.

Създаване на модел

Във вашия models.py файл, създайте нов модел и включете поле за плужек. Ето един пример:

класРецепта(модели. Модел):
име = модели. CharField (max_length=225, празно=Невярно, null=Невярно)
съставки = модели. Текстово поле (празно=Невярно, null=Невярно)
инструкции = модели. Текстово поле (празно=Невярно, null=Невярно)
date_created = модели. DateTimeField (auto_now=Вярно)
плужек = модели. SlugField (null = Вярно, празно=Вярно, уникален=Вярно)

В горния пример моделът Рецепта съдържа поле с име плужек. The плужек полето има атрибутите, нула и празно настроен на Вярно.

Приложете миграции към вашия модел

След като създадете модел, трябва да изпълните следната команда във вашия инструмент за команден ред, за да създадете таблицата във вашата база данни:

python manage.py makemigrations && python manage.py мигрират

Горната команда първо ще генерира файл за мигриране и след това ще актуализира базата данни чрез изпълнение на инструкциите във файла за мигриране.

Добавете данни към вашата база данни

Регистрирайте вашия модел, като въведете следното във вашия admin.py файл:

от django.contrib импортиране администратор
от .модели импортиране Рецепта

admin.site.register (Рецепта)

След това отворете инструмента на командния ред и създайте a суперпотребител за вашия администраторски панел, като изпълните тази команда:

python manage.py createsuperuser

Горната команда ще ви преведе през стъпките, изобразени на това изображение:

След създаването на a суперпотребител, стартирайте вашия локален сървър със следната команда:

python manage.py runserver

След като вашият сървър стартира, трябва да отидете до http://127.0.0.1:8000/admin/, влезте с данните, които сте използвали за създаване на a суперпотребители ръчно добавете някои рецепти към вашата база данни. Трябва да обърнете внимание на полето на плужека.

Създайте изгледи за вашето приложение

Отвори си views.py файл и създайте два изгледа за вашето приложение. Първият изглед просто ще покаже преглед на вашите рецепти, докато вторият ще даде повече подробности за всяка рецепта. Можете да използвате тези изгледи във вашия проект:

от django.shortcuts импортиране изобразяване, get_object_or_404
от .модели импортиране Рецепта

# Изглед на списък за рецепти
дефсписък_рецепти(заявка):
рецепти = Recipe.objects.all()
връщане изобразяване (заявка, 'recipes/recipe_list.html', {"рецепти":рецепти})

# Подробен изглед за всяка рецепта
дефrecipe_detail(заявка, recipe_slug):
рецепта = get_object_or_404(Рецепта, slug=recipe_slug)
връщане изобразяване (заявка, 'recipes/recipe_detail.html', {"рецепта": рецепта})

В горния кодов фрагмент, списък_рецепти изглед връща списъка с всички рецепти в шаблона. От друга страна, recipe_detail view връща една рецепта към шаблона. Този изглед приема допълнителен параметър, наречен recipe_slug който се използва за получаване на охлюв за конкретна рецепта.

Конфигурирайте URL модели за вашите изгледи

В директорията на вашето приложение (или рецепта папка), създайте файл, наречен urls.py за да добавите URL пътища за вашето приложение. Ето един пример:

от django.urls импортиране път
от .изгледи импортиране списък_рецепти, детайл_рецепта

urlpatterns = [
път ('', списък_рецепти, име="рецепта-дом"),
път ('рецепта//', recipe_detail, име='detail_recipe'),
]

В горния кодов фрагмент вторият път въвежда плужека в URL адреса на страницата.

Създайте шаблони за вашето приложение

За да покажете рецептите в браузъра, създайте шаблони за вашите изгледи. Един шаблон трябва да е за списък_рецепти изглед, докато другият трябва да е за recipe_detail изглед. За да използвате slug във вашия шаблон, следвайте този формат, {% url 'view_name' recipe.slug %}. Ето два примера, които можете да използвате във вашия код:

 recipes/recipe_list.html 
{% разширява 'base.html' %}

{% блокиране на съдържанието %}
<h1клас="my-5 текстов център">Рецептиh1>
<център>
<улклас="списък-група w-75">
{% за рецепта в рецепти %}
<ликлас="списък-група-елемент моят-3">
<h2клас="mb-3">
<аhref="{% url 'recipe_detail' recipe.slug %}">
{{ recipe.name }}
а>
h2>
<стрклас="w-50">
Съставки: {{ recipe.ingredients }}
стр>
<стрклас="заглушен текст">
Създаден: {{ recipe.date_created }}
стр>
ли>
{% празен %}
<ликлас="списък-група-елемент">Няма намерени рецепти.ли>
{% endfor %}
ул>
център>
{% endblock %}

Горният HTML шаблон ще изведе всички рецепти във вашата база данни и ще се покаже Няма намерени рецепти ако няма рецепти. Той използва Bootstrap класове за стилизиране. Можете да научите как да използвайте Bootstrap с Django. Горният шаблон трябва да изглежда така в браузъра:

 recipes/recipe_detail.html 
{% разширява 'base.html' %}

{% блокиране на съдържанието %}
<център>
<дивклас="w-75">
<h1клас="mt-5 mb-4">{{ recipe.name }}h1>
<h3>съставкиh3>
<стр>{{ recipe.ingredients }}стр>
<h3>Инструкцииh3>
<стр>{{ recipe.instructions }}стр>
<стрклас="заглушен текст">Създаден: {{ recipe.date_created }}стр>
див>
център>
{% endblock %}

HTML шаблонът по-горе връща подробности за конкретна рецепта. В браузъра горната страница трябва да изглежда така:

Ще забележите, че URL адресът вече съдържа всеки плужек, който сте добавили във вашата база данни за всяка рецепта. Ако не разбирате как работи шаблонната система, първо трябва да научите наследяване на шаблони в Django и MVT архитектурата на Django.

Автоматично генериране на охлюв в Django

С охлювите това, което наистина искате, е автоматично да ги генерирате въз основа на поле във вашия модел. За да направите това, трябва да промените запази () метод във вашия модел и задайте свои собствени правила, преди обектите да бъдат записани в базата данни. Ето един прост пример, който можете да добавите към вашия клас модел:

# импортиране на slugify
от django.template.defaultfilters импортиране замърсявам

дефспаси(self, *args, **kwargs):
аконе self.slug:
self.slug = slugify (self.name)
super().save(*args, **kwargs)

Горната функция първо проверява дали съществува slug за моделния обект. Ако няма slug, той използва замърсявам функция за генериране на такова от полето за име в модела. След отмяна на запази () метод, отворете администраторския си панел и добавете няколко рецепти. Този път не е необходимо да попълвате полето за охлюв, защото то автоматично ще бъде попълнено, след като запазите рецептата си.

Ако отидете до страницата с подробности за вашата новодобавена рецепта, ще видите, че URL адресът използва името на рецептата като охлюв.

Понякога ще имате няколко рецепти с едно и също име и това ще доведе до грешки във вашия плужек. Можете да коригирате това, като добавите уникален елемент към вашия плужек, като датата на създаване. Ето един прост пример:

self.slug = slugify (self.name + "-" + str (self.date_created))

Използвайте Slugs за подобряване на работата с URL

За разлика от доброто старо pk, охлювите осигуряват много предимства, включително гъвкавост и преносимост, тъй като не са обвързани с конкретни идентификатори на URL като първичния ключ. Следователно, ако промените структурата на вашата база данни или мигрирате вашите данни, все още можете да поддържате последователни URL адреси. Охлювите също подобряват удобството на SEO.