Django项目
创建django项目:
django-admin startproject 项目名
创建django应用:
要先进入django项目名里才能创建: cd 项目名
django-admin startapp myapp
注:myapp是子应用名
实例:
模板页面
模板配置
在settings.py文件中,找到TEMPLATES选项,修改其中的DIRS属性,在这里添加我们的html文件夹位置
# project.settings.py
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',
],
},
},
]
创建模板
在项目的根目录下,创建一个templates文件夹,然后创建一个HTML文件
视图渲染
在子应用下的views文件里写视图渲染 以函数的形式定义
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, "index.html")
给视图传值
1.映射格式数据
以key:value的形式传值
from django.shortcuts import render
def index(request):
content = {'weather': '晴天'}
return render(request, 'index.html', content)
2.直接用locals方法,将变量及值组合成字典
from django.shortcuts import render
def index(request):
weather = '晴天'
return render(request,'index.html',locals())
路由分散
从同名文件里复制urls.py文件
主应用下的urls.py
from django.contrib import admin from django.urls import path, include from myapp import urls urlpatterns = [ path('admin/', admin.site.urls), path("", include(urls)) ]
子应用下的urls.py
在子路由里给视图配路由
from django.urls import path from myapp.views import index urlpatterns = [ path("index/", index), ]
模板语句循环,分支
{% for var in sequence %}
{{ var }}
{% endfor %}
{% if test_list %}
列表不为空
{% elif test_dict %}
列表为空,字典不为空
{% else %}
列表字典均为空
{% endif %}
ORM映射 和mysql建立连接
概念
ORM映射关系,是django与数据库之间的一个桥梁,可以使开发者不再关注如何去编写SQL语句,直接通过一套ORM所提供的API接口即可方便对各种数据库进行交互
M:和数据库进行交互,进行数据处理
V:视图
T:template模板
模型类编写
在子应用myapp下的models.py文件中创建模型类
from django.db import models # Create your models here. class Student(models.Model): name = models.CharField(max_length=10, verbose_name="名字") age = models.IntegerField(verbose_name="年龄") sex = models.CharField(max_length=10, verbose_name="性别") #定义元类 class Meta: #修改数据库里的表名 db_table = "student" #在admin后台中看到的效果 verbose_name_plural = "学生" #在admin后台中看到添加对象的名字 def __str__(self): return self.name
注册APP
在settings文件中进行配置
#myproject/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', #注册app 'myapp', ]
然后在同名文件下的__init__文件里写
#告诉django安装了mysql import pymysql pymysql.install_as_MySQLdb()
生成迁移文件
python manage.py makemigrations
执行迁移文件
python manage.py migrate
创建超级用户
python manage.py createsuperuser
admin控制台注册模型类
在子应用下的admin.py里写
from django.contrib import admin from myapp.models import Student # Register your models here. admin.site.register(Student) #使用 register 函数接收模型类作为参数即可完成注册
ORM视图操作
如何通过ORM操作模型类
from django.shortcuts import render
from myapp.models import Student
# Create your views here.
def stu(request):
stus = Student.objects.all()
dict = {"info": stus}
return render(request, "index.html", dict)
模版页面数据渲染ORM操作结果
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hi</title>
</head>
<body>
{% for foo in info %}
<p>{{ foo.id }}</p>
<p>{{ foo.name }}</p>
{% endfor %}
</body>
</html>