Учебник по Django (1) Представление Django и URL-адрес

база данных Python JVM Django

###содержание:

#1. Введение ###МВК

  • Фреймворки MVC доступны на большинстве языков разработки.
  • Основная идея фреймворка MVC: развязка
  • Уменьшите связь между функциональными модулями, облегчите внесение изменений, упростите рефакторинг кода и максимизируйте повторное использование кода.
  • m представляет модель, которая в основном используется для инкапсуляции уровня базы данных.
  • v означает представление, которое используется для отображения результатов пользователю
  • c означает контроллер, который является ядром, используемым для обработки запросов, получения данных и возврата результатов.

###MVT

  • Django — это фреймворк для веб-разработки на Python.
  • В отличие от MVC, он принадлежит структуре MVT.
  • m означает модель, отвечающую за взаимодействие с базой данных
  • v означает представление, которое является ядром, отвечающим за получение запросов, получение данных и возврат результатов.
  • t означает шаблон, который отвечает за отображение контента в браузере.

DjangoЭто бесплатная веб-инфраструктура с открытым исходным кодом, разработанная на Python, которую можно использовать для быстрого создания высокопроизводительных и элегантных веб-сайтов!

Официальный сайт Джанго Официальная документация Джанго Введение в установку официальной документации Django

Джанго — этоMVCСконструированный каркас. Но в Django та часть контроллера, которая принимает пользовательский ввод, обрабатывается самим фреймворком, поэтому Django уделяет больше внимания моделям (Model), шаблонам (Template) и представлениям (Views), называемым режимом MTV.

BSD: лицензия BSD была разработана с выпуском BSD UNIX Калифорнийским университетом в Беркли, а модифицированная версия была принята Apple и Apache. Лицензия BSD является частью «разрешительной лицензии на свободное программное обеспечение», которая накладывает минимальные ограничения на повторное использование программного обеспечения.

Лицензия BSD позволяет авторам использовать ресурсы по лицензии для включения их в частные версии программного обеспечения, которые могут распространяться по лицензии на программное обеспечение с закрытым исходным кодом.

№ 2. Строительство окружающей среды

  1. Загрузите файл образа Ubuntuадрес один адрес два адрес три

  2. Установитьubuntu

  3. Установите pip, используйте следующий подходящий код для установки

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install python-pip

Для пользователей, разрабатывающих Python, установка пакетов PIP является обычным делом. Однако скорость загрузки из иностранных источников слишком низкая, это пустая трата времени, и многие программы всегда блокируются стеной, поэтому замена источника установки PIP отечественным зеркалом может значительно повысить скорость загрузки, а также решить проблему. из-за невозможности установить библиотеку из-за стены. , чтобы повысить вероятность успешной установки. В Интернете доступно множество источников, рекомендуемые здесь:pip источник Университета Цинхуа, который является зеркалом официального сайта pypi, который синхронизируется каждые 5 минут.

LinuxЗатем измените ~/.pip/pip.conf (создайте его, если у вас его нет), нажмите Ctrl + H, чтобы увидеть скрытые файлы, измените index-url на tuna, содержимое выглядит следующим образом:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

4. Используйте pip для установки Django (рекомендуется версия 1.11)

(sudo)pip install Django
或者 (sudo) pip install Django==1.8.16 
或者 pip install Django==1.11

Проверьте, прошла ли установка успешно

>>> import django
>>> django.VERSION
(1, 11, 'final', 0)
>>> 
>>> django.get_version()
'1.11'

№ 3. Установите pycharm

  1. скачатьJDK

  2. распаковать введите команду:tar zvxf jdk-8u131-linux-x64.tar.gz

  3. Создать jvm-файл введите команду:sudo mkdir /usr/lib/jvm

  4. Перейдите в /usr/lib/jvm введите команду:sudo mv jdk1.8.0_131/ /usr/lib/jvm/**Примечание: **Если файла jvm нет, хотя выполнение этого оператора автоматически создаст файл jvm, он поместит в jvm только файлы из jdk1.8.0_25, а не jdk1.8.0_25 и его файлы. файл jvm, между ними есть разница

  5. Установите переменные среды JDK (Он также изменен в ~/.bashrc, разница в том, что метод настройки /etc/profile действителен для всех зарегистрированных пользователей, ~/.bashrc действителен только для текущего пользователя) введите команду:sudo vim ~/.profileредактировать:

export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_131
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
  1. Внесите изменения в силу немедленноsource ~/.profile
  2. Проверить JDK введите команду:java -version

№ 4. Правильно установите VMware Tools в Ubuntu Чтобы понять, что вы можете перетаскивать файлы из окон в ubuntu, вы можетеУстановите инструменты VMware.

№ 5. Основной модуль Джанго

  • urls.pyЗапись URL-адреса связана с функцией (или универсальным классом) в соответствующем файле views.py, и доступ к URL-адресу соответствует функции.

  • views.pyОбработайте запрос, отправленный пользователем, соответствующий из urls.py, и выведите отображаемый контент, например имя пользователя после входа в систему, и данные, запрошенные пользователем, на веб-страницу путем рендеринга веб-страницы в шаблонах.

  • models.pyОн связан с операциями с базой данных.Он используется при хранении или чтении данных.Конечно, вы не можете использовать его, когда база данных не используется.

  • forms.pyФормы, отправка данных пользователя в браузере, работа по проверке данных и работа по созданию поля ввода, конечно, вы также не можете использовать это.

  • папка с шаблонамиФункция в views.py отображает шаблон Html в шаблонах для получения веб-страницы с динамическим содержимым.Конечно, для повышения скорости можно использовать кэширование.

  • admin.pyБэкэнд, вы можете иметь мощный бэкэнд с очень небольшим количеством кода.

  • settings.pyНастройки Django, файлы конфигурации, такие как переключатели DEBUG, расположение статических файлов и т. д.

# 6. Основные команды Django

  • Создайте новый проект джанго
django-admin.py startproject project_name
特别是在 windows 上,如果报错,尝试用 django-admin 代替 django-admin.py 试试

Обратите внимание, что имя_проекта — это имя вашего собственного проекта, которое должно быть допустимым именем пакета Python, например 1a или a-b.

  • Новое приложение Чтобы сначала войти в каталог проекта, нажмите cd имя_проекта, а затем выполните следующую команду (то же самое ниже, если вы уже находитесь в каталоге проекта, вам не нужно cd имя_проекта)
python manage.py startapp app_name
或 django-admin.py startapp app_name

Как правило, проект имеет несколько приложений, конечно, общие приложения также могут использоваться в нескольких проектах. Подобно имени проекта, имя приложения также должно быть допустимым именем пакета Python, например, блог, новости, о нас и т. д. — все это допустимые имена приложений.

  • Создать таблицу базы данных или изменить таблицу или поле базы данных
Django 1.7.1及以上 用以下命令
# 1. 创建更改的文件
python manage.py makemigrations
# 2. 将生成的py文件应用到数据库
python manage.py migrate
 
 
旧版本的Django 1.6及以下用
python manage.py syncdb

Этот метод может создать таблицу, соответствующую коду models.py, в базе данных, такой как SQL, без необходимости самостоятельно выполнять SQL вручную. Примечание. Для изменения существующих моделей версии Django до Django 1.7 не могут автоматически изменять структуру таблицы, но есть сторонние инструменты на юге.

  • Используйте сервер разработки Сервер разработки, который используется во время разработки, как правило, перезапускается автоматически после изменения кода, что удобно для отладки и разработки, однако из-за проблем с производительностью его рекомендуется использовать только для тестирования, а не в производственной среде.
python manage.py runserver
 
# 当提示端口被占用的时候,可以用其它端口:
python manage.py runserver 8001
python manage.py runserver 9999
(当然也可以kill掉占用端口的进程)
 
# 监听机器所有可用 ip (电脑可能有多个内网ip或多个外网ip)
python manage.py runserver 0.0.0.0:8000
# 如果是外网或者局域网电脑上可以用其它电脑查看开发服务器
# 访问对应的 ip加端口,比如 http://172.16.20.2:8000
  • очистить базу данных
python manage.py flush

Эта команда спросит, да или нет.Выбор да очистит все данные, оставив только пустую таблицу.

  • Создать суперадминистратора
python manage.py createsuperuser
 
# 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
 
# 修改 用户密码可以用:
python manage.py changepassword username
  • Терминал среды проекта Django
python manage.py shell

# 7. Просмотры и URL-адреса Django ###1 URL-адрес в Django записывается в файле urls.py, а регулярное выражение используется для соответствия функции (или общему классу) в views.py.

  1. Создайте новый проект с именем zebk
django-admin startproject zebk

Примечание. Если django-admin не работает, используйте django-admin.py. 2. Создайте новое приложение (приложение) с именем zhong

python manage.py startapp zhong  # zhong 是一个app的名称
  1. Примечание. Для Django 1.8.x и выше также существует папка миграции. Django 1.9.x также добавит файл apps.py на основе Django 1.8.

Добавьте наше только что определенное приложение в INSTALL_APPS в settings.py. Измените mysite/mysite/settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
 
    'zhong',
)

Роль: если вновь созданное приложение не добавлено в INSTALL_APPS, django не может автоматически найти файлы шаблонов (файлы в папке app-name/templates/) и статические файлы (файлы в app-name/static/) в приложении.

###2. Определите функцию просмотра (то есть содержимое, отображаемое при доступе к странице) Откройте файл views.py в /zebk и добавьте следующее

# -*- coding: utf-8 -*- 
from django.http import HttpResponse
 
def index(request):
    return HttpResponse(u"hellow 中二病控丶!")
  1. Первая строка должна объявить кодировку какutf-8, т.к. мы используем в коде китайский язык, если он не заявлен, будет сообщено об ошибке.
  2. Вторая строка вводит HttpResponse, который используется для возврата контента на веб-страницу, как и в Python.printто же, толькоHttpResponseзаключается в отображении контента на веб-странице.
  3. мы определяемindex()функции, первым параметром должен быть запрос, который связан с запросом, отправленным веб-страницей.Переменная запроса содержит содержимое get или post, а также пользовательский браузер, систему и другую информацию в ней (будет обсуждаться позже, просто сначала разберись).
  4. Функция возвращает A.HttpResponseОбъект после некоторой обработки, наконец, отображает несколько слов на веб-странице.

###3. Определите URL-адрес, связанный с функцией просмотра

  1. Определите URL-адрес (URL), относящийся к функции просмотра (то есть укажите, какой URL-адрес соответствует какому контенту) Откройте файл mysite/mysite/urls.py и измените в нем код: В mysite/urls.py импортируйте модуль django.conf.urls.include и добавьте его в список urlpatterns, чтобы mysite/urls.py выглядел следующим образом:
# mysite/urls.py
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^zhong/', include('zhong.urls')),
    url(r'^admin/', admin.site.urls),
]

2. Создайте urls.py в Zhong и напишите следующее:

from django.conf.urls import url

from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]

Затем запустим на терминале python manage.py runserver и увидим что-то вроде этого:

 python manage.py runserver
 
Performing system checks...
 
System check identified no issues (0 silenced).
 
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
 
December 22, 2015 - 11:57:33
Django version 1.9, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Откройте страницу, введите127.0.0.1:8000/zhong/

# 8. Операция управления

  • Сайт разделен на две части: «Публикация контента» и «Общий доступ».
  • Часть «публикации контента» отвечает за добавление, изменение и удаление контента, и разработка этих повторяющихся функций является утомительной и нетворческой работой. С этой целью Django будет автоматически генерировать модули управления на основе определенных классов модели. ###Администрирование с помощью django Создайте пользователя-администратора
python manage.py createsuperuser,按提示输入用户名、邮箱、密码
  • Запустите сервер, войдите через «127.0.0.1:8000/admin», введите имя пользователя и пароль, созданные выше, чтобы завершить вход.
  • Войдите на сайт управления, вы можете управлять группами и пользователями по умолчанию

###Локализация интерфейса управления

  • Отредактируйте файл settings.py, установите кодировку, часовой пояс
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'

###Зарегистрируйте модель буктеста у администратора

  • Откройте файл booktest/admin.py и зарегистрируйте модель.
from django.contrib import admin
from models import BookInfo
admin.site.register(BookInfo)
  • Обновите страницу управления, вы можете добавлять, удалять, изменять и проверять данные BookInfo

  • Проблема: если в методе str возвращается китайский язык, при изменении и добавлении будет сообщено об ошибке ascii.

  • Решение. В методе str() добавьте «.encode('utf-8')» в конец строки. ###Пользовательская страница администратора

  • Django предоставляет класс admin.ModelAdmin.

  • Определите, как модель отображается в интерфейсе администратора, определив подкласс ModelAdmin.

class QuestionAdmin(admin.ModelAdmin):
    ...
admin.site.register(Question, QuestionAdmin)

#####Список свойств страницы

  • list_display: Показать поля, вы можете щелкнуть заголовок столбца для сортировки
list_display = ['pk', 'btitle', 'bpub_date']
  • list_filter: поле фильтра, поле фильтра появится справа
list_filter = ['btitle']
  • search_fields: поля поиска, окно поиска появится вверху
search_fields = ['btitle']
  • list_per_page: подкачка, окно подкачки появится в нижней части
list_per_page = 10

#####Добавление и изменение свойств страницы

  • поля: порядок атрибутов
fields = ['bpub_date', 'btitle']
  • наборы полей: группировка атрибутов
fieldsets = [
    ('basic',{'fields': ['btitle']}),
    ('more', {'fields': ['bpub_date']}),
]

#####Связанные объекты

  • Для классов моделей HeroInfo существует два способа регистрации.

    • Способ 1. То же, что и класс модели BookInfo.
    • Способ 2: Регистрация ассоциации
  • Завершите регистрацию HeroInfo в соответствии с методом регистрации BookInfor.

  • Далее реализуем связанную регистрацию

from django.contrib import admin
from models import BookInfo,HeroInfo

class HeroInfoInline(admin.StackedInline):
    model = HeroInfo
    extra = 2

class BookInfoAdmin(admin.ModelAdmin):
    inlines = [HeroInfoInline]

admin.site.register(BookInfo, BookInfoAdmin)
  • Вы можете изменить встроенный метод на таблицу
class HeroInfoInline(admin.TabularInline)

##### Отображение логического значения

  • Отображение пола поста не является интуитивным результатом и может быть инкапсулировано с помощью методов
def gender(self):
    if self.hgender:
        return '男'
    else:
        return '女'
gender.short_description = '性别'
在admin注册中使用gender代替hgender
class HeroInfoAdmin(admin.ModelAdmin):
    list_display = ['id', 'hname', 'gender', 'hcontent']