Полное руководство по Django Framework: от начала работы до продвинутых приложений
Полное руководство по Django Framework: от начала работы до продвинутых приложений

Django — это эффективный и мощный веб-фреймворк Python, который широко используется для создания веб-приложений любого размера. Независимо от того, новичок вы или опытный разработчик, вы можете начать работу и освоить продвинутые навыки Django. В этом руководстве мы шаг за шагом познакомим вас с основными концепциями и расширенными функциями Django, подробно объяснив их на примерах кода и анализе.

Начиная

Установить Джанго

первый,Убедитесь, что Python установлен в вашей системе. Затем,использоватьpipУстановить Джанго:

Язык кода:bash
копировать
pip install django

Создать проект Джанго

В командной строке создайте новый проект Django, используя следующую команду:

Язык кода:bash
копировать
django-admin startproject myproject

Это создаст файл с именемmyprojectпапка,Он содержит базовую структуру проекта Django.

Создать заявку

В Django приложение — это модульный компонент веб-проекта. Мы можем создать новое приложение, используя следующую команду:

Язык кода:bash
копировать
python manage.py startapp myapp

Это создаст файл с именемmyappприложение。

Напишите первый просмотр

Открытьmyapp/views.pyдокумент,Напишите простое представление:

Язык кода:python
кодКоличество запусков:0
копировать
from django.http import HttpResponse

def index(request):
    return HttpResponse("Hello, world! This is my first Django view.")

Настройка маршрутизации URL-адресов

Открытьmyproject/urls.pyдокумент,Настройка маршрутизации URL-адреса, сопоставляет просмотры с URL-адресами:

Язык кода:python
кодКоличество запусков:0
копировать
from django.urls import path
from myapp import views

urlpatterns = [
    path('', views.index, name='index'),
]

Запустите сервер разработки

Теперь мы можем запустить сервер разработки Django:

Язык кода:bash
копировать
python manage.py runserver

Доступ в браузереhttp://127.0.0.1:8000/,Вы увидите сообщение «Привет, мир! Это мой первый просмотр Django».

Средний уровень

Модель базы данных

Django предоставляет мощную систему ORM (реляционное сопоставление объектов) для управления моделью. базы данных。существоватьmyapp/models.pyдокументмодель, определенная в:

Язык кода:python
кодКоличество запусков:0
копировать
from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

    def __str__(self):
        return self.name

Затем выполните следующую команду, чтобы создать таблицу базы данных:

Язык кода:bash
копировать
python manage.py makemigrations
python manage.py migrate

Опыт управления

В Django есть мощный опыт. управления, используемый для управления контентом веб-сайта. Мы можем включить и настроить Опыт, выполнив следующие действия. управления:

  1. существоватьmyapp/admin.pyдокумент Зарегистрируйте модель в:
Язык кода:python
кодКоличество запусков:0
копировать
from django.contrib import admin
from .models import MyModel

admin.site.register(MyModel)
  1. Запустите сервер разработкии доступhttp://127.0.0.1:8000/admin/,Войдите в систему как суперпользователь,Вы можете получить доступ к базе данных модели и управлять ею.

Передовой

Пользовательский вид

В дополнение к простым представлениям функций мы также можем писать представления на основе классов для реализации более сложной логики. Например, создайте представление с помощью шаблона:

Язык кода:python
кодКоличество запусков:0
копировать
from django.views.generic import TemplateView

class MyView(TemplateView):
    template_name = 'myapp/my_template.html'

RESTful API

Django Rest Framework — популярное расширение Django для создания RESTful API. Мы можем использовать его для создания представлений API и преобразования данных в формат JSON с помощью сериализатора.

Язык кода:python
кодКоличество запусков:0
копировать
from rest_framework.views import APIView
from rest_framework.response import Response

class MyAPIView(APIView):
    def get(self, request, *args, **kwargs):
        data = {'message': 'Hello, world!'}
        return Response(data)

Кэширование и оптимизация производительности

Django предоставляет мощную систему кэширования, которая может значительно повысить производительность веб-приложений. Используя декораторы кэша и промежуточное программное обеспечение, можно кэшировать представления и результаты запросов, что снижает нагрузку на сервер.

Язык кода:python
кодКоличество запусков:0
копировать
from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    # просмотреть логику

обработка формы

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

Язык кода:python
кодКоличество запусков:0
копировать
from django import forms

class MyForm(forms.Form):
    name = forms.CharField(label='Your Name', max_length=100)
    email = forms.EmailField(label='Your Email')

Затем используйте класс формы в представлении для обработки данных, отправленных пользователем:

Язык кода:python
кодКоличество запусков:0
копировать
from django.shortcuts import render
from .forms import MyForm

def my_form_view(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            # Обработка данных формы
    else:
        form = MyForm()
    return render(request, 'myapp/my_form.html', {'form': form})

Аутентификация пользователя

Django предоставляет встроенную аутентификацию. пользователясистема,Регистрация пользователя, вход в систему, выход из системы и другие операции могут быть легко выполнены. первый,Включите систему аутентификации в настройках проекта:

Язык кода:python
кодКоличество запусков:0
копировать
# settings.py
INSTALLED_APPS = [
    ...
    'django.contrib.auth',
    'django.contrib.contenttypes',
    ...
]

Аутентификацию пользователя затем можно обрабатывать с помощью встроенных представлений и шаблонов:

Язык кода:python
кодКоличество запусков:0
копировать
# urls.py
from django.contrib.auth import views as auth_views

urlpatterns = [
    ...
    path('accounts/login/', auth_views.LoginView.as_view(), name='login'),
    path('accounts/logout/', auth_views.LogoutView.as_view(), name='logout'),
    ...
]

интернационализация

Django поддерживает интернационализацию и локализацию,Содержимое веб-сайта можно легко перевести на несколько языков. первый,Включите интернационализацию в настройках проекта:

Язык кода:python
кодКоличество запусков:0
копировать
# settings.py
USE_I18N = True

LANGUAGES = [
    ('en', 'English'),
    ('zh-hans', «Упрощенный китайский»)
    ...
]

Затем используйте тег шаблона перевода в шаблоне, чтобы отметить текст, который необходимо перевести:

Язык кода:html
копировать
{% load i18n %}
<h1>{% trans "Welcome" %}</h1>

сделанный на заказ Опыт управления

По индивидуальному заказу Опыт управления, интерфейс управления можно настроить в соответствии с потребностями проекта. Например, измените Опыт Стиль и макет управления, добавление пользовательских классов управления моделями и т. д.

Язык кода:python
кодКоличество запусков:0
копировать
# admin.py
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'age')
    search_fields = ('name',)
    ...

admin.site.register(MyModel, MyModelAdmin)

Развертывание и масштабирование

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

безопасность

При разработке приложений Django,Крайне важно убедиться в правильности применения. Django предоставляет ряд встроенных функций безопасности.,В том числе предотвращение распространенных веб-атак (таких как атаки с использованием межсайтовых сценариев и подделка межсайтовых запросов), Безопасное хранение паролей、Безопасное соединение HTTPS и т. д. Настройте параметры безопасности в настройках проекта:

Язык кода:python
кодКоличество запусков:0
копировать
# settings.py
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

тест

Написание теста — важный шаг в обеспечении качества вашего приложения. Django предоставляет мощную среду тестирования.,Может помочь нам написать и запустить различные типы тестов.,Включает модульный тест, функциональный тест и интеграционный тест. Например,Напишите простой модульный тест:

Язык кода:python
кодКоличество запусков:0
копировать
from django.test import TestCase
from .models import MyModel

class MyModelTestCase(TestCase):
    def setUp(self):
        self.obj = MyModel.objects.create(name='Test', age=25)

    def test_model(self):
        self.assertEqual(self.obj.name, 'Test')
        self.assertEqual(self.obj.age, 25)

Асинхронная обработка задач

иногда,Нам нужно выполнять трудоемкие задачи,Например, отправка электронных писем или обработка больших объемов данных. Django предоставляет простую, но мощную платформу асинхронной обработки задач.,Этого можно добиться с помощью таких инструментов, как Celery. первый,Установите Celery и настройте:

Язык кода:bash
копировать
pip install celery

Затем определите асинхронную задачу в проекте:

Язык кода:python
кодКоличество запусков:0
копировать
# tasks.py
from celery import shared_task

@shared_task
def send_email_task(email, message):
    # Логика отправки писем

Расширенные возможности RESTful API

Если вашему приложению необходимо предоставить RESTful API, Django Rest Framework предоставляет множество расширенных функций, таких как аутентификация, контроль разрешений, фильтрация, сортировка и т. д. Например, используйте наборы представлений и маршрутизаторы для определения конечных точек API:

Язык кода:python
кодКоличество запусков:0
копировать
from rest_framework import viewsets, routers
from .models import MyModel
from .serializers import MyModelSerializer

class MyModelViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

router = routers.DefaultRouter()
router.register(r'mymodels', MyModelViewSet)

Веб-пакет

наконец,учитьсяDjangoиз Веб-пакет,Например Джанго Debug Панель инструментов и Джанго Расширения и т. д. могут помочь нам лучше отлаживать и анализировать приложения в процессе разработки. Например, установите и настройте Django Debug Toolbar:

Язык кода:bash
копировать
pip install django-debug-toolbar
Язык кода:python
кодКоличество запусков:0
копировать
# settings.py
INSTALLED_APPS = [
    ...
    'debug_toolbar',
    ...
]

MIDDLEWARE = [
    ...
    'debug_toolbar.middleware.DebugToolbarMiddleware',
    ...
]

Django Channels

Django Channels — это расширение для обработки асинхронных протоколов связи, таких как WebSockets и HTTP/2. Это позволяет нам создавать в Django приложения реального времени, такие как чат-приложения или системы уведомлений в реальном времени. Прежде всего, установите Джанго Channels:

Язык кода:bash
копировать
pip install channels

Затем определите Consumer для обработки соединений WebSocket:

Язык кода:python
кодКоличество запусков:0
копировать
# consumers.py
import asyncio
from channels.generic.websocket import AsyncWebsocketConsumer

class MyConsumer(AsyncWebsocketConsumer):
    async def connect(self):
        await self.accept()

    async def disconnect(self, close_code):
        pass

    async def receive(self, text_data):
        await self.send(text_data=json.dumps({
            'message': text_data
        }))

запланированные задачи

иногда,Нам нужно выполнить запланированные задачи в приложении., такие как регулярное резервное копирование базы данных или отправка запланированных напоминаний. Django предоставляет простые запланированные рамки задачи, вы можете использовать Celery или Django Q и другие инструменты для достижения. Прежде всего, установите Джанго Q:

Язык кода:bash
копировать
pip install django-q

Затем настройте запланированные задачи в настройках проекта:

Язык кода:python
кодКоличество запусков:0
копировать
# settings.py
Q_CLUSTER = {
    'name': 'mycluster',
    'workers': 4,
    'timeout': 90,
    'retry': 120,
    'queue_limit': 50,
    'bulk': 10,
    'orm': 'default',
    'sync': False,
    'save_limit': 250,
    'ack_failures': True,
}

Оптимизация производительности

Оптимизация производительности приложений Django — важная тема, которую можно достичь с помощью ряда методов и инструментов, включая кэширование, оптимизацию базы данных, статическое сжатие файлов, оптимизацию кода и т. д. Например, используйте кеширование для повышения производительности:

Язык кода:python
кодКоличество запусков:0
копировать
from django.views.decorators.cache import cache_page

@cache_page(60 * 15)
def my_view(request):
    # просмотреть логику

Практические советы по разработке

Наконец, давайте рассмотрим некоторые практические аспекты. советы по разработке,Помогите нам более эффективно разрабатывать приложения Django. Например,Используйте теги шаблонов, чтобы упростить ваши шаблоны:

Язык кода:html
копировать
{% load my_tags %}
{% my_custom_tag %}

Альтернативно используйте Django Shellинтерактивнотесткод:

Язык кода:bash
копировать
python manage.py shell

Подвести итог

Эта статья представляет собой подробное руководство по фреймворку Django.,От начального до продвинутого,Охватывает множество важных тем и техник. первый,Мы рассмотрели основы Django,Включая установку, создание проектов и приложений, написание представлений и маршрутизацию URL-адресов и т. д. впоследствии,Погружаемся в темы среднего уровня,нравиться Модель базы данных、Опыт управления、обработка формы и Аутентификация пользователя и как использовать интернационализацию и настраивать Опыт управление и т. д. В предварительном просмотре мы дополнительно обсудили безопасность, тестирование и асинхронную поддержку Django. обработка задач、Расширенные возможности RESTful API、Django Channels、запланированные задачи、Оптимизация производительностии Практические советы по разработке。

Изучая эту статью, читатели смогут полностью освоить различные аспекты платформы Django и создавать мощные и высокопроизводительные веб-приложения. Независимо от того, являетесь ли вы новичком или опытным разработчиком, вы можете изучить практические приемы и рекомендации из этой статьи. В будущих проектах читатели смогут гибко использовать полученные знания по мере необходимости для постоянного улучшения и оптимизации своих приложений для улучшения пользовательского опыта и эффективности разработки. Продолжайте углубленно учиться и практиковаться, и вы станете лучшим разработчиком Django!

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода