备注:本文内容参考其他文章而来,非原创,仅为个人的学习记录。
Django的架构
让我们一览 Django 全貌:
1、urls.py 网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
2、views.py 处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
3、models.py 与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
4、forms.py 表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
5、templates 文件夹 views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。
6、admin.py 后台,可以用很少量的代码就拥有一个强大的后台。
7、settings.py Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。
django常用操作:
备注:以下操作的版本信息为Django 2.2.4,Python3.5
1、创建一个django项目:django-admin startproject my_django_project
2、创建一个app:django-admin startapp my_app_1 (新定义的app需要加到settings.py中的INSTALL_APPS中)3、在my_app_1 目录中,把views.py打开,修改其中的源代码:
# Create your views here.
#coding:utf-8
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse(u"欢迎进入第一个Django页面!")
4、修改urls.py的源代码:
from django.contrib import admin
from django.urls import path
from my_app_1 import views as app_1_views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', app_1_views.index),
]
5、本地运行服务器测试效果:
python manage.py runserver
6、配置简单数据库操作,默认sqlite,现指定mysql数据库
(1)在my_django_project/settings.py文件下修改如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'test',
'USER': 'root',
'PASSWORD': '1',
'HOST':'localhost',
'PORT':'3306',
},
}
在my_django_project/init.py下修改:
import pymysql
pymysql.install_as_MySQLdb()
重启服务,如果报错:mysqlclient 1.3.13 or newer is required; you have 0.9.3.
请参考此文解决:https://blog.csdn.net/weixin_33127753/article/details/89100552
7、在my_app_1/models.py下设计数据库表,采用ORM方式
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField("name", max_length=30)
password = models.CharField("password", max_length=30)
email = models.EmailField("email", max_length=30)
def __str__(self):
return self.username
8、创建更改的文件,将生成的py文件应用到数据库,执行:
python manage.py makemigrations
python manage.py migrate
9、创建超级管理员
(python3.5) D:\ZengHongfu\python_workplace\my_django_project>python manage.py createsuperuser
Username (leave blank to use 'zenghongfu'):
Email address:
Password:
Password (again):
This password is too short. It must contain at least 8 characters.
This password is entirely numeric.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
10、启动服务,超级管理员登录后台
11、 在 my_app_1/admin.py中定义显示数据,重启服务
from django.contrib import admin
from .models import User
# Register your models here.
class UserAdmin(admin.ModelAdmin):
list_display = ('username', 'password', 'email') # 自定义显示字段
admin.site.register(User, UserAdmin)
后台管理设置为中文显示,settings.py下修改代码:
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans' # 中文显示