创建Django项目步骤:
第一步:创建虚拟环境
第二步:安装django模块
第三步:创建一个存放项目的根目录文件夹,进入文件夹后,再使用django-admin创建django项目
第四步:进入到项目根目录后,直到看到manage.py这个文件,运行runserver命令
第五步:pycharm远程连接虚拟机:设置三个点
- 连接到python解释器
- 设置好Deployment里面的设置
- 设置好在pycharm里面的runserver
Django项目操作步骤
URLconf:urls.py:指明你的登陆路径
模板:redirect重定向,reverse(app_name:name)动态解析(如果要跳到别的app里需要app_name)
render(模板渲染),模板变量:{{ 变量名 }},模板过滤器:{{ 变量名|过滤器[:参数] }},模板标签:{{ % load static % }}
模板标签
一,常用标签
模板标签的作用:在模板中进行各种逻辑操作,比如循环,判断等
模板标签基本语法:{% load static %},{% tag %}{% endtag %}
1,{% load static %} # 加载静态文件
2,{% for aaa in data %} {% endfor %} # 使用for循环
3,{{ forloop.counter }} # 实现生成器的效果
3,{% url 'student:detail' aaa.name %} # 跳转到根目录student App里的视图
4, {% if 条件一 %}
{% elif 条件二 %}
{% else %}
{% endif %}
二,模板的引用(include)
{% include 'student/ad.html' %} # 广告,所有网页共同的部分
三,模板的继承
继承:extends
作用: 将模板中共同的部分抽离出来,独立作为一个部分
{% extends 'student/base.html' %} # 要放在html最前面,导入的继承的部分
但是此时页面上只有继承过来的base.html这个网页的效果,原来的网页内容不见了?
扩展:block(公共部分挖坑,通过继承之后填坑)
{% block 名称 %}内容{% endblock %}
继承的好处:可以把所有页面的公共部分抽离出来,作为一个独立的部分,然后在公共的部分通过block挖坑(相当于写一个占位),然后在功能页面通过继承extend把base页面继承过来,然后再同过block把之前的坑填了(相当于在占位里面加上内容),减少代码量,只需要填坑就行了
四,自定义过滤器
本质:就是一个python函数,有一个或者两个参数
- 第一个参数是传进来的模板变量,不一定是字符串
- 第二个参数是一个普通参数,可以是默认参数,也可以不要这个参数
前提:设置数据时,0代表女,1代表男
展示数据时,页面显示为中文或者英文
解决方法:自定义过滤器
步骤
-
常用设置:在student App下创建一个templatetags的python包
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'student' ] # 创建之前必须确认该setting下的配置是否有App名
-
设置 自定义过滤器函数
def to_sex(values, arg='zh'): # values 0,1 change ={ 'zh': ('女', '男'), 'en': ('Female', 'Male') } return change[arg][values]
-
注册
from django import template register = template.Library() def to_sex(values, arg='zh'): # values 0,1 change ={ 'zh': ('女', '男'), 'en': ('Female', 'Male') } return change[arg][values] register.filter('to_sex', to_sex) # 参数一:自定义过滤器名字, 二:函数名 register.filter(to_sex) # 函数名,用函数名做过滤器
-
导入{% load customer_filers %}
传入参数(传给第二个参数)