Рубрики
Без рубрики

Джанго “Привет, мир” 5 разных способов

Джанго-это «батарея, включенная», которая поставляется со встроенными лесами, предоставленными началом … Помечено с Джанго, Питоном, Учебником, Новичками.

Django-это «батарея, включенная», которая поставляется со встроенными лесами, предоставленными StartProject Команда и общие концепции приложений. Но, на самом деле, Джанго обеспечивает невероятную гибкость при желании вокруг структуры.

Подумайте, как архитектура на одном страничном веб -сайте: Как самый простой способ сделать это? На макушке, по крайней мере, 5 подходов приходят на ум. Потому что, если вы действительно думаете об этом, приложения совсем не обязательны, а скорее организационное удобство, которое помогает разуме о кодовой базе. То же самое для независимых видов файлов. Нам даже не нужны шаблоны для простого сайта, когда мы можем вернуть строки в представлении. В значительной степени urls.py Файл является единственной «обязательной» частью упражнения.

Настраивать

В вашей командной строке создайте новый каталог под названием пять и сделать новый проект Django. Мы будем использовать Pipenv здесь и называть наш каталог высшего уровня конфигурация Анкет

$ pipenv install django==3.0.7
$ pipenv shell
(five) $ django-admin startproject config .
(five) $ python manage.py migrate
(five) $ python manage.py runserver

Перейдите на домашнюю страницу Django на http://127.0.0.1:8000/ Чтобы подтвердить, что все работает.

1. Приложение + Templateview

«Традиционным» подходом будет создание выделенного приложения для статических страниц и использования Шаблон , общий класс на основе класса, предоставленный Django.

Во -первых, создайте приложение, которое можно назвать все, что мы выбираем. В этом случае это будет Страницы Анкет Убедитесь, что вы остановили локальный сервер, набрав Контроль+c Анкет

(five) $ python manage.py startapp pages

Добавьте новое приложение в нашем Insted_apps параметр.

# config/settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'pages.apps.PagesConfig', # new
]

Обновите config/urls.py Файл путем импорта Включить и добавление пути для приложения страниц.

# config/urls.py
from django.contrib import admin
from django.urls import path, include # new

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pages.urls')), # new
]

Хорошо, что теперь? Нам нужен urls.py Файл в нашем приложении, файл представлений и файл шаблона.

Начнем с Страницы/urls.py файл. Во -первых, создайте его, используя прикосновение Команда, если вы на Mac.

(five) $ touch pages/urls.py

Код включает в себя один путь в Home1/ , a HomePageview Мы еще не создали, и имя URL Главная Анкет

# pages/urls.py
from django.urls import path

from .views import HomePageView

urlpatterns = [
    path('home1/', HomePageView.as_view(), name='home1'),
]

Взгляд импорт Шаблон и указывает на шаблон под названием home.html Анкет

# pages/views.py
from django.views.generic import TemplateView


class HomePageView(TemplateView):
    template_name = 'pages/home.html'

И, наконец, нам нужен шаблон. Создать Шаблоны каталог В пределах Страницы приложение , затем новый каталог под названием Страницы и, наконец, шаблон под названием home.html Анкет


Hello World

Запустите локальный сервер снова с Python Manage.py Runserver и перейдите к http://127.0.0.1:8000/home1/ Анкет

Этот подход хорошо работает для крупных проектов, где вы хотите выделить Страницы Приложение для статических страниц. Но так как эта статья для образовательных целей, давайте посмотрим еще 4 способа, которыми мы сможем достичь того же результата.

2. Функциональный вид

Первое, что мы могли бы сделать, это заменить общий класс на основе класса Templateview Для функционального представления. Django позволяет использовать виды на основе функций или на основе классов.

Мы импортируем рендер На вершине Страницы/views.py и добавить новый вид, home_page_view2 , который запрашивает тот же шаблон home.html Анкет

# pages/views.py
from django.shortcuts import render # new
from django.views.generic import TemplateView


class HomePageView(TemplateView):
    template_name = 'pages/home.html'


def home_page_view2(request): # new
    return render(request, 'pages/home.html')

Этот новый взгляд будет иметь свой собственный путь, Home2/ , в Страницы/urls.py файл.

# pages/urls.py
from django.urls import path

from .views import HomePageView, home_page_view2 # new

urlpatterns = [
    path('home1/', HomePageView.as_view(), name='home1'),
    path('home2/', home_page_view2, name='home2'), # new
]

Убедитесь, что сервер все еще работает, и перейдите к http://127.0.0.1:8000/Home2/ Чтобы увидеть новую версию нашей домашней страницы в действии.

3. Нет шаблона!

Третий подход будет заключаться в том, чтобы полностью удалить шаблон, так как все, что мы отображаем, – это короткий объем текста. Мы можем создать новое представление, которое делает это путем импорта Httpresponse и жестко кодировать строку Привет, мир быть возвращенным.

# pages/views.py
from django.shortcuts import render, HttpResponse # new
from django.views.generic import TemplateView


class HomePageView(TemplateView):
    template_name = 'pages/home.html'


def home_page_view2(request): 
    return render(request, 'pages/home.html')


def home_page_view3(request): # new
    return HttpResponse('Hello World')
# pages/urls.py
from django.urls import path

from .views import HomePageView, home_page_view2, home_page_view3 # new

urlpatterns = [
    path('home1/', HomePageView.as_view(), name='home1'),
    path('home2/', home_page_view2, name='home2'),
    path('home3/', home_page_view3, name='home3'), # new
]

Перейдите к http://127.0.0.1:8000/home3/ В вашем веб -браузере, чтобы увидеть эту третью версию в действии.

4. Нет приложения!

На самом деле нам не нужно использовать приложения, если мы не хотим. Можно создать страницу «Hello World» исключительно на уровне нашего уровня проекта конфигурация каталог.

Вот весь код, который нам нужен только в одном файле:

# config/urls.py
from django.contrib import admin
from django.urls import path, include
from django.views.generic import TemplateView # new

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pages.urls')),
    path('home4/', TemplateView.as_view(template_name='pages/home.html'), name='home4'), # new
]

Мы импортировали Templateview Вверху создайте новый путь URL, указанный на существующий шаблон в пути и предоставил обновленное имя URL -адреса Home4 .

Перейдите к http://127.0.0.1:8000/home4/ Чтобы увидеть это в действии!

5. Модели

Пятым подходом будет использование базы данных для отображения наше сообщение «Hello World». Это включает в себя добавление модели.py Файл и использование встроенного DetailView Анкет

Создайте новый файл с именем Pages/models.py Анкет Мы добавим только одно поле, текст , к модели, называемой Пост Анкет Добавление дополнительного __str__ Метод означает, что модель будет хорошо отображаться в администраторе Django.

# pages/models.py
from django.db import models


class Post(models.Model):
    text = models.TextField()

    def __str__(self):
        return self.text[:50]

Поскольку мы внесли изменения в наши модели базы данных, пришло время для файла миграций, а затем вызвать мигрировать обновить базу данных.

(five) $ python manage.py makemigrations
(five) $ python manage.py migrate 

Мы захотим базовый Страницы/admin.py Файл, чтобы увидеть наш Страницы Приложение в администраторе, так что обновление Страницы/admin.py следующее:

# pages/admin.py
from django.contrib import admin

from .models import Post

admin.site.register(Post)

Создайте учетную запись суперпользователя и снова запустите сервер.

(five) $ python manage.py createsuperuser
(five) $ python manage.py runserver

Войдите в администрацию в http://127.0.0.1:8000/admin/ и нажмите на ссылку для Сообщения под Страницы Анкет

Нажмите «+Добавить» рядом с ним. Добавьте наш текст, который будет «Hello World», и нажмите кнопку «Сохранить» в правом нижнем углу.

Успех! Мы добавили наш первый пост в базу данных.

Чтобы отобразить этот пост, нам понадобится файл URL -адреса, файл представлений и файл шаблона. Начните с Страницы/urls.py где мы импортируем новый вид под названием Homedetaileview и добавьте путь для этого.

# pages/urls.py
from django.urls import path

from .views import HomePageView, home_page_view2, home_page_view3, HomeDetailView # new

urlpatterns = [
    path('home1/', HomePageView.as_view(), name='home1'),
    path('home2/', home_page_view2, name='home2'),
    path('home3/', home_page_view3, name='home3'),
    path('home//', HomeDetailView.as_view(), name='post_detail'), # new
]

Страницы/views.py Файл должен импортировать DetailView на вершине и нашем Пост модель. Затем создайте Homedetaileview который ссылается на наши Пост модель и новый Страницы/Home5.html шаблон.

# pages/views.py
from django.shortcuts import render, HttpResponse 
from django.views.generic import TemplateView, DetailView # new

from .models import Post # new

class HomePageView(TemplateView):
    template_name = 'pages/home.html'


def home_page_view2(request): 
    return render(request, 'pages/home.html')


def home_page_view3(request): 
    return HttpResponse('Hello, World!)


class HomeDetailView(DetailView): # new
    model = Post
    template_name = 'pages/home5.html'

Последний шаг – создать новый шаблон под названием Home5.html это отобразит Текст Поле из нашей модели.


{{ post.text }}

Убедитесь, что локальный сервер работает Python Manage.py Runserver и перейдите к http://127.0.0.1:8000/home/1/ Чтобы увидеть наш 5 -й подход в действии.

И вот это!

Вывод

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

Оригинал: “https://dev.to/learndjango/django-hello-world-5-different-ways-209f”