项目的创建与运行
1.创建项目目录
django—admin startproject 项目名称
会自动生成一个文件和一个文件夹
项目目录
目录结构:
-myweb
-myweb ->项目的容器
-__init__.py ->一个空的文件,告诉python这个目录应该被认为是一个python包
-settings.py ->django项目的配置 设置等。
-urls.py ->django项目的url生命,django网站的目录
-wsgi.py ->wsgi兼容的web服务器 为项目提供服务的入口
-manage.py ->一个命令行实用程序,可以以各种方式与django项目进行交互
外部myweb根目录是一个项目容器。
2. 项目启动
进入项目目录 本地访问:
命令行输入:
python manage.py runserver
或在指定的端口启动服务
python manage.py runserver 端口号
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vaMYM92o-1646037064560)(C:\Users\ZCR\AppData\Roaming\Typora\typora-user-images\image-20220226151919169.png)]
浏览器访问本地地址端口号输入8000 进入django欢迎界面
启动远程访问:
python manage.py runserver 0.0.0.0:8000
项目的创建和使用
1.创建应用
进入目录
命令行输入:python manage.py startapp myapp
会自动创建一个myapp目录:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uSu1b7sq-1646037064563)(C:\Users\ZCR\AppData\Roaming\Typora\typora-user-images\image-20220226153041037.png)]
2.编写视图
1.在myapp目录下的views.py文件中写入
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("hello world")
2.在myapp目录下创建路由文件urls.py写入
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
# 请求地址,访问views的index方法,
]
3.在myweb目录下找到总路由地址文件urls.py添加上
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path("myapp/", include('myapp.urls'))
]
4.浏览器访问
localhost:8000/myapp
即可访问在视图创建的http响应 hello world
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XSOpwvJZ-1646037064565)(C:\Users\ZCR\AppData\Roaming\Typora\typora-user-images\image-20220226155212790.png)]
*如何找到myapp下的index方法
1.首先在setting.py文件中找到路由地址
ROOT_URLCONF = 'myweb.urls'
2.在myweb的urls文件找到路由地址 myapp.ruls
path("myapp/", include('myapp.urls')
3.最后通过myapp找到views.py视图文件显示视图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vJYX5ebt-1646037064567)(C:\Users\ZCR\AppData\Roaming\Typora\typora-user-images\image-20220226160028890.png)]
总的来说就是通过父文件的父路由找到子文件的子路由,最后通过子路由找到子文件的视图文件
项目的模型
1.连接mysql数据库设置
在默认情况下,配置使用sqlite,若不是用sqlist作为数据库,则需要额外的设置,例如user,password,host必须加入
其中engine设置为数据库后端使用。内置数据库后端有:
django.db.backends.postgresql
django.db.backends.mysql
django.db.backends.sqlise3
django.db.backends.oracle
在setting文件中 找到DATABASES修改数据库设置
mysql例如:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #数据库驱动
'NAME': 'mydemo', #数据库名
'USER': 'root', #数据库用户名
'PASSWORD': 'root', #数据库密码
'PORT': '3306', #数据库端口号
}
}
2.创建模型
在myapp目录下的models文件中创建模型:
from django.db import models
# Create your models here.
class Stu(models.Model): #models.Model方法中封装好了数据库增删改查的方法
# 定义属性:默认主键自增id字段可不屑
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16)
age = models.SmallIntegerField()
sex = models.CharField(max_length=1)
classid = models.CharField(max_length=8)
# 定义默认输出格式
def __str__(self):
return "%d:%S:%D:%S:%S"%(self.id,self.name,self.age,self.sex,self.classid)
# 自定义对应的表名,默认表名:myapp_stu
class Meta:
db_table="stu"
3.激活模型
在myweb目录下找到setting文件找到INSTALLED_APPS 添加当前应用:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp.apps.Myao' #或者直接写入 'myapp'
]
4.使用(两种)
1.(交互式):
进入交互式的python shell 并使用django提供的免费api
进入项目目录 命令行输入 :
打开python shell
python manage.py shell
>>> from myapp.models import Stu
>>> mod = Stu.objects
>>> list = mod.all() #获取mod所有信息
>>> for i in list: #循环打印
... print(i)
...
1:zhangsan:20:m:python02
2:??:22:m:python02
3:None:22::python02
4:1:22::python02
5:1:22::python02
6:2:22::python02
7:6:22::python02
8:8:22::python02
9:9:22::python02
2. (视图式):
进入myapp目录在视图views文件中添加show方法:
def show(request):
lists = Stu.objects.all()
for stu in lists:
print(stu)
print(Stu.objects.get(id=6))
return HttpResponse("show...... ")
进入路由管理urls文件添加路径:
urlpatterns = [
path('', views.index, name='index'),
path('show', views.show, name='show'),
# 请求地址,访问views的index方法,
]
启动服务:
python manage.py runserver
浏览器打开:
localhost:8080/myapp/show
使用视图的方式调用方法 将数据打印在命令行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p7qLZlKg-1646037064569)(C:\Users\ZCR\AppData\Roaming\Typora\typora-user-images\image-20220226165435811.png)]
启用网站Admin管理
1.数据迁移
Django框架中有一个非常强大的应用功能–自动管理界面,常常被web平台管理者使用,去管理整个web平台。
默认情况下 在setting文件中INSTALLED_APPS包含一下应用程序,这些程序都是由Django提供:
'django.contrib.admin', --管理网站
'django.contrib.auth', --认证系统
'django.contrib.contenttypes', --内容类型的框架
'django.contrib.sessions', --会话框架
'django.contrib.messages', --消息框架
'django.contrib.staticfiles', --管理静态文件的框架
'myapp.apps.MyappConfig' --自定义应用框架
使用这些django自带的应用,需要我们在数据库中创建一些数据表对应,然后才能使用他们。
命令行输入:
>python manage.py migrate
其中该migrate命令查看该INSTALLED_APPS设置,并根据myweb/setting.py文件中的数据库设置和应用程序随附的数据库迁移创建任何必须的数据库表。(也就是说 会根据myweb目录中的setting文件找到我们连接的数据库名和数据库 并在该数据库中创建相应的数据表)
2.创建管理员用户
我们需要创建一个可以用于登录管理站点的用户。
E:\Pycharm project\myweb>python manage.py createsuperuser -》创建超级管理员
Username (leave blank to use 'zcr'): admin -》输入管理员名
Email address: 180@qq.com -》输入邮箱地址
Password: -》输入密码
Password (again): -》输入密码
Superuser created successfully.
3.进入django后台管理界面
浏览器地址栏输入localhost:8000/admin
进入后登录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dK3Xqm3r-1646037064570)(C:\Users\ZCR\AppData\Roaming\Typora\typora-user-images\image-20220226171704212.png)]
设置语言与时区
编辑setting配置文件
LANGUAGE_CODE = 'zh-hans' --设置语言为中文
TIME_ZONE = 'Asia/Shanghai' --设置时区为上海
4.将我们自定义的应用程序加入到后台管理
打开myapp/admin.py文件:
将myapp中的数据迁移到admin中
from django.contrib import admin
# Register your models here.
from myapp.models import Stu
admin.site.register(Stu)
5.更深入设计后台管理
编辑myapp/models.py文件,在Stu类中添加如下信息,让后台管理显示中文字段。
class Stu(models.Model): # models.Model方法中封装好了数据库增删改查的方法
# 定义属性:默认主键自增id字段可不屑
id = models.AutoField("学号", primary_key=True)
name = models.CharField("姓名", max_length=16)
age = models.SmallIntegerField("年龄", )
sex = models.CharField("性别", max_length=1)
classid = models.CharField("班级", max_length=8)
编辑myapp/admin.py文件 实现信息管理的个性化定制
from django.contrib import admin
# Register your models here.
from myapp.models import Stu
# Stu模型的管理器(装饰器写法)
@admin.register(Stu)
class StuAdmin(admin.ModelAdmin):
# listdisplay设置要显示在列表中的字段(id字段是django模型的默认主键)
list_display = ('id','name','age','sex','classid')
# 设置哪些字段可以点击进入编辑界面
list_display_links = ('id','name')
# list_per_page 设置每页显示多少条记录 默认显示100
list_per_page = 10
# ordering 设置默认排序字段 , 负号表时降序
ordering = ('id',) #-id降序
# list_editable 设置默认可编辑字段
# list_editable = ['age','sex','classid']
更多设置参考说明