Django的环境配置
-
python环境是ok的
-
pip是可用的
- pip用来安装第三方包的
-
创建虚拟环境【可以先不写】
- linux/mac
- windows
-
安装Django
pip install django==1.11.7
-
django安装成功之后,创建项目
创建项目之前首先新建一个目录【文件夹】
进入这个目录之后执行
django-admin startproject projectname #django-admin startproject 项目名
-
使用pycharm打开项目的时候,要在manage.py的上一级打开
- manage所在的文件夹z
注意:
- manage所在的文件夹z
- manage.py是命令工具,可使我们用多种方式对Django进行交互。
2.int.py一个空文件,他告诉你这个目录应该被看做一个python包
3.setting.py项目的配置文件
4.url.py项目的url声明
5.wsgi.py项目与WSGI兼容的web服务器端入口
-在__int__.py中添加
import pymysql
pymysql.install_as_MySQLdb()
-在setting.py中修改
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: “sunck”,数据库名字
“USER”:“root”,数据库用户名
“PASSWORD”:“sunck”,数据库密码
“HOST”:“localhost”,IP地址
“PORT”:“3306”,端口号
}
}
注意:在使用数据库的时候,必须保证数据库的服务是开启的状态
net start mysql//开启Mysql数据库
create database sunck;
mysql -u root -p 进入mysql
- 当进入pychram之后,我们可以使用自带终端来创建app应用(一个项目中可以创建多个应用,每个应用处理一种应用)
``在上一级文件夹下:
python manage.py startapp appname(我命名为myApp)
说明:
1. admin.py 站点配置
2. models.py模型
3. view.py视图
- 当app创建完成之后,需要在setting.py文件中配置
```python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"App",#添加我们创建的app注册一下
]
-
在setting.py文件中
-
ALLOWED_HOSTS = ["*"] #允许所有人访问
-
在setting.py文件中
#设置语言 LANGUAGE_CODE = 'zh-hans' #设置时区 TIME_ZONE = 'Asia/Shanghai'
-定义一个模型:有一个表需要对应一个模型
在models.py 引入from django.db import models
模型类要继承models.model类
class Grades(models.Model):
gname = models.CharField(max_length=20)
gdate = models.DateField()
ggirlnum = models.IntegerField()
gboynum = models.IntegerField()
isDelete = models.BooleanField(default=False)
class Students(models.Model):
sname = models.CharField(max_length=20)
sgender = models.BooleanField(default = True)
sage = models.IntegerField()
scontend = models.CharField(max_length=20)
isDelete = models.BooleanField(default=False)
#关联外键
sgrade = models.ForeignKey(“Grades”)
此案例说明:不需要定义主键,在生成时自动添加
-在数据库中生成数据表
第一步:生成迁移文件(在migration目录下生成一个迁移文件,此时数据库中还没有生成数据库)
python manage.py makemigrations(还是在project目录下执行)
第二步:进行迁移
python manage.py migrate(还是在project目录下执行)
相当于执行了SQL语句创建表
-测试数据操作:
1.进入到python shell环境,需执行python manage.py shell
2.引入一些包 from myApp.models import Grades,Students
From django.utils import timezone
From datetime import *
4. 查询所有数据
格式:类名.objects.all()
Grades.objects.all()
5. 添加数据:
本质上创建一个模型类的对象实例
grade1 = Grades()
grade1.gname = “python04”
grade1.gdate = datetime(year=2019,month=11,day=3)
grade1.gboynum = 70
grade1.ggirlnum = 11
grade1.save()//一定要保存一下
stu = Students()
stu.sname=“这一次”
stu.sgender=False
stu.scontend=“我叫次”
stu.sage=22
stu.sgrade=grade1
stu.save()
- 查看某个对象
格式:类名.objects.get(pk=2)
Grades.objects.get(pk=2)//第二个数据 - 修改数据
格式: 模型对象.属性 = 新值
grade2.gboynum = 60
grade2.save() - 删除数据:grades.delete()
这是物理删除,数据库表中的数据被删除 - 获取关联对象的所有集合
需求,获取python04班的所有学生
对象名。关联的类名小写_set.all()
Grade1.students_set.all() - 创建曾志伟属于班级python04
Stu3 = grade1.students_set.create(sname=u曾志伟’,sgender=True,scontend=u’我是曾志伟’,sage=111)
- 启动服务器
python manage.py runserver ip:port
说明:ip可以不写
端口号默认是8000
python manage.py runserver
注:这个是python写的轻量级的web服务器,仅仅在开发测试中使用 - 运行成功,在浏览器访问
http://127.0.0.1:8000/
#会显示正常工作
- Admin站点管理
1. 内容发布(负责添加、修改、删除内容)
配置Admin应用(在setting.py中的INSTALLED.APPS中添加'django.contrib.admin'但是默认已经添加)
2. 创建管理员用户
python manage.py createsuperuser
依次输入用户名、邮箱、密码
http://127.0.0.1:8000/admin进入
汉化:在settings.py中
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
3. 管理数据表
修改admin.py 文件
from .models import Grades,Students
#注册
admin.site.register(Grades)
admin.site.register(Students)
自定义管理页面
class GradesAdmin(admin.ModelAdmin):
#以下列表页属性
#显示字段
# list_display = [‘pk’,‘gname’,‘gdate’,‘ggirlnum’,‘gboynum’,‘isDelete’]
#过滤字段
list_filter = [‘gname’]
#搜索字段
search_fields = [‘gname’]
#分页
list_per_page = 5
#以下添加、修改页属性
#规定属性的先后顺序
fields = [‘ggirlnum’,‘gboynum’,‘gname’,‘gdate’,‘isDelete’]
#给属性分组
#注意fields与fieldsets不能同时使用
fieldsets = [
(“num”,{“fields”:[‘ggirlnum’,‘gboynum’]}),
(“base”,{“fields”:{‘gname’,‘gdate’,‘isDelete’}}),
]
admin.site.register(Grades,GradesAdmin)
4 关联对象
要求:创建一个班级时,可以直接添加几个学生
class StudentsInfo(admin.TabularInline):
model = Students
extra = 2
class GradesAdmin(admin.ModelAdmin):
inlines = [StudentsInfo]
5 布尔值显示问题(显示男女)
```def gender(self):
if self.gender():
return "男"
else:
return "女"
#设置页面列的名称
gender().short_description = "性别"
list_display = ['pk','sname','sage',gender,'scontend','sgrade','isDelete']
-视图的基本使用
1.概述:
在Django中,视图对web请求进行回应
视图就是一个python的函数,在views.py中进行定义
定义视图:
from django.http import HttpResponse
def index(request):
return HttpResponse("sunck is goodluck!!!!!!") ```
配置url:
修改projects目录下urls.py文件
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^’,include(‘myApp.urls’))
]
在maApp应用目录下创建urls.pywen文件
from django.conf.urls import url
from . import views
urlpatterns = [
url(r’^$’,views.index)
]
模板的基本使用:
·模板是HTML页面,可以根据视图中传递过来的数据进行填充
创建templates模板目录,在目录下创建对应项目的模板目录(project/templates/myApp)
·配置模板的路径:修改setting.py中的TEMPLATES
```
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],#添加
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},```
·定义俩模板grades.html和students.html
`模板语法:
{输出值,可以是变量,可以是对象属性}
或者是{%执行代码段%}
图示: https://blog.csdn.net/weixin_43249914/article/details/84792113