Django系列---开发一
阅读原文时间:2023年07月08日阅读:2

参考

杜赛: https://www.dusaiphoto.com/article/2/

官方文档: https://docs.djangoproject.com/en/3.2/

开发环境

# 基本
python 3.7
pip install django==2.2.3

# 扩展
pip install django-crispy-forms # 渲染表单使用
pip install mysqlclient==1.4.6 # mysql 数据库使用

一、 项目创建基本语句

# 创建名为 my_blog的django项目
django-admin startproject my_blog
# 运行django服务器
python manage.py runserver 127.0.0.1:8000
# 创建app,名为article
python manage.py startapp article
# 之后需要在settings中注册此app

# 创建管理员账号 Superuser
python manage.py createsuperuser

打开chrome浏览器,输入http://127.0.0.1:8000/ ,即可看到运行的django

二、 Model层相关

在有了网站之后,第一个需要学习的是 数据层的使用,需要在数据库中建立数据表,具体建立方法参考官方文档

# 两条数据库更新的基本指令
python manage.py makemigrations
python manage.py migrate

三、 View层相关

需要在每个app中新建 urls.pyforms.py,用于路由管理与表单构建。

有了用户数据之后,网站需要先登录,此时涉及到url配置,此配置在urls.py中。

在与settings.py同级的urls.py中配置到各个app的路由,在各个app中配置具体功能的路由。

主urls

from django.contrib import admin # admin的网址需要
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls), # 使用admin自带的所有网址
    path('phone/', include("phone.urls", namespace='phone')), # phone是app的名字
    path('account_django/', include("account_django.urls", namespace='account_django')),
]

二级urls

以account_django为例

from django.urls import path, reverse_lazy
from . import views
from django.contrib.auth import views as auth_views

app_name = 'account_django'

urlpatterns = [
    path('login/', views.user_login, name='login'),
    path('logout/', views.user_logout, name='logout'),
    path('home/', views.home, name='home'),
    path('about_system/', views.about_system, name='about_system'),
    path('users_table/', views.UsersTable.as_view(), name='users_table'),
    path('ajax_delete_user', views.ajax_delete_user, name='ajax_delete_user'),
    path('user_register/', views.user_register, name='user_register'),
    path('user_update/', views.user_update, name='user_update'),
    path('list_dep', views.list_dep, name='list_dep'),
    path('list_test_modules', views.list_test_modules, name='list_test_modules'),
    path('password_change/', auth_views.PasswordChangeView.as_view(
        success_url=reverse_lazy('account_django:password_change_done')
    ), name='password_change'),
    path('password_change_done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),

]

表单

在用户登录时,输入用户名与密码的框即为表单。

例,登录的form类

# 引入表单类
from django import forms
class LoginForm(forms.Form):
    username = forms.CharField(required=True, label="邮箱前缀", widget=forms.TextInput(attrs={'class': 'form-control'}))
    password = forms.CharField(required=True, label="密码", widget=forms.PasswordInput(attrs={'class': 'form-control'}))

四、 内置后台管理工具

# 生成指令
python manage.py createsuperuser
# 访问
http://127.0.0.1:8000/admin/

五、 seetings设置

# 1、自定义模块 与 静态文件 位置
TEMPLATES = [
    {
        ... ...
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')], # 此是需要手动修改的,其余的是默认生成的
        'APP_DIRS': True,
        ... ...
    },
]

# 2、设置数据库为使用的mysql
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'library',
        'USER': 'root',
        'PASSWORD': 'password',
        'HOST': '10.18.99.166',
        'PORT': '3306',
    }
}

# 3、设置语言与时区为 中文
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

# 4、设置静态文件放置处
STATIC_URL = '/static/' # 此为默认生成的
STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),) # 静态文件目录,为包含一个元素的元组; 此句放于 STATIC_URL='/static' 语句后

# 5、若是重写的User继承了django自带的User,则添加下句
AUTH_USER_MODEL = 'account.User'  # 让django自带的User类不起作用