django常用命令和知识点
Python Console
import django
django.get_version() 查看安装版本
Terminal
django-admin 查看可以使用的指令
django-admin startproject 新建一个django项目
django-admin startapp 新建一个app
并且在setting.py的INSTALLED_APPS下加入该应用名
主路由与子路由
urlpatterns = [
path('admin/', admin.site.urls),
path('子应用自定义地址/', include('子应用名称.urls'))
]
模板配置
Settings.py中pycharm自动配置和生成templates文件夹
TEMPLATES = [
{
'DIRS': [BASE_DIR / 'templates']
}
静态文件
Settings.py中配置
STATIC_URL = 'static/' # 别名
STATICFILES_DIRS = [
BASE_DIR / 'statics'
]
需要手动在项目根目录新建statics目录:包含css、js、plugins、images 四个文件夹
模板使用静态文件
{% load static %}
<img src="{% static 'images/程序员.jpg' %}">
<img src="/static/images/程序员.jpg">
模板继承、块
{% extends "base.html" %}
{% block mainBody %}
自定义内容
{% endblock mainBody %}
模板标签
模板标签=变量+关键字+函数
{# 注释内容 #}
{% python语句 %}
自定义标签:
Seting里Templates下options添加
'libraries': {
'my_tags': 'templates.my_tags',
}
在templates下新建my_tags.py然后注册Library,用装饰器@register.simple_tag()写自定义模板函数
过滤器
{# 过滤器 #}
{# 内置过滤器:lower upper truncatewords:"30" 等#}
<p>过滤器:</p>
<p>{{ views_list.0 | lower}}</p>
自定义过滤器的步骤和自定义标签前面的步骤一样,需要新建一个my_tags.py再去options下添加这个py文件,装饰器用@register.filter(),对了,在文件中使用同样需要load加载。另外,过滤器需要重启才能生效。
@register.filter()
def my_filter(v1, v2):
return v1 * v2
<p>自定义过滤器</p>
{# score就是第一个参数,第二个参数0.6 #}
{{ score | my_filter:0.6 }}
Django关联数据库
Setting.py中配置数据库信息
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME': BASE_DIR / 'django',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123456',
}
}
init.py中初始化一下
import pymysql
pymysql.install_as_MySQLdb()
在具体应用的models.py中操作数据库,必须继承Django基类models.Model
from django.db import models
# Create your models here.
class Test(models.Model):
# 数据名 = 数据类型 + 数据约束
name = models.CharField(max_length=20)
age = models.IntegerField(default=0)
此时查看数据库发现并没有Test库和name这个数据:
执行python manage.py migrate
方法进行数据迁移后:
但是还是没找到我们的Test这个库,执行python manage.py makemigrations hello
这里的hello是应用名,告诉django我们在应用中模型有所改变,再查看数据库发现是没有!!!
最后我们发现,需要再执行python manage.py migrate hello
进行迁移!!!
至此,django和数据库关联成功!
Django操作数据库
通过路由到方法直接操作:
from django.urls import re_path
from . import testdb
urlpatterns = [
# 使用正则的话必须要用re_path!!!
re_path(r'db/add$', testdb.add),
path('db/getall', testdb.getAll),
]
testdb.py
from django.http import HttpResponse
from .models import Test
def add(request):
name = request.GET.get('name')
age = request.GET.get('age')
test = Test(name=name, age=age)
test.save()
return HttpResponse("<p>数据添加成功</p>")
def getAll(request):
Llist = Test.objects.all()
response = ""
for v in Llist:
response += v.name + ":" + str(v.age) + "\n"
return HttpResponse("<p>" + response + "<p>")