@第一节课程内容
- js正则
登录注册验证
@text-判断字符串是否符合规定的正则
@exec-获取匹配的数据
- bootstrap(组件)
–css
–js
学习bootstrap规则
- jQueryui(同2)
- easyUI(同2)
- web框架
- Django
里面Orm框架只占10分之一,但是水平特别高
@js的正则
@
@
@18周第二节,没细看,到第六节没看
@@@第七节Django框架
@web本质就是socket
@字符串变字节
b’ str’
bytes(‘str’,encoding=’utf-8’)
‘str’.encode(‘utf-8’)
@mvc:model ,view ,controller,数据库+模板文件+业务处理
Mtv:model,template,view数据库+模板文件+业务处理
@Django是基于mtv
@@@@第十八周第八节
@安装完Django
F:\pyproject\Scripts
django-admin.exe startproject mysite#创建
@2018.8.7
@python manage.py runserver 127.0.0.1:8001#指定端口并运行
@@@第十八周第九节
@# 创建Django工程
django-admin startproject 【工程名称】
mysite
- mysite # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 遵循WSGI规范或者uwsgi + nginx自建
- manage.py # 管理Django程序:
@wsgi是一套规则、接口
http://www.cnblogs.com/wupeiqi/articles/5341480.html
Django依赖别人的socket,通过wsgi
@python manage.py #运行
- python manage.py startapp xx#创建
- python manage.py makemigrations#创建数据库
- python manage.py migrate#创建数据库
@启动已有django
python manage.py runserver 8000
@chouti
- chouti
- 配置
- 主站 app
- 后台管理 app
@# 创建app
python manage.py startapp cmdb
python manage.py startapp openstack
python manage.py startapp xxoo....
@migration迁移
@创建app自动生成:
migrations 数据修改表结构
admin Django为我们提供的后台管理
apps 配置当前app
models ORM,写指定的类 通过命令可以创建数据库结构
tests 单元测试
views 业务代码
@#都用static
@ 1、配置模板路径
'DIRS': [os.path.join(BASE_DIR,'templates')],
2、#配置静态目录,以外部直接访问静态目录
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),,#不加逗号就报错
)
3、html里面引用模板<link rel="stylesheet" href="/static/commons.css" />
@scrf跨站请求伪造
在settings里面找到middleware里面的scrf注释掉。
@表单提交错误
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set
解决方法:
Html里action 修改为 action="/a/b/"即可修复
这是django特殊的错误,url和views里面的action的login有没有斜杠要一致。
@html里面取字典的值只能用(.)没有[]这一说
@内容整理
1. 创建Django工程
django-admin startproject 工程名
2. 创建APP
cd 工程名
python manage.py startapp cmdb#在pycha里面的terminal里创建就行
3、静态文件
project.settings.py
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)
4、模板路径
DIRS ==> [os.path.join(BASE_DIR,'templates'),]
5、settings中
middlerware
# 注释 csrf,提交数据时不会报错
6、定义路由规则
url.py
"login" --> 函数名
7、定义视图函数
app下views.py
def func(request):
# request.method GET / POST
# http://127.0.0.1:8009/home?nid=123&name=alex
# request.GET.get('',None) # 获取直接修改浏览器里的url请求发来的而数据
# request.POST.get('',None)
# return HttpResponse("字符串")
# return render(request, "HTML模板的路径", {''})
# return redirect('/只能填URL')
8、模板渲染
特殊的模板语言
-- {{ 变量名 }}
def func(request):
return render(request, "index.html", {'current_user': "alex"})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
</body>
</html>
====> 最后生成的字符串
<html>
..
<body>
<div>alex</div>
</body>
</html>
-- For循环
def func(request):
return render(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
<ul>
{% for row in user_list %}#字典user_dict.values
{% if row == "alex" %}
<li>{{ row }}</li>
{% endif %}
{% endfor %}
</ul>
</body>
</html>
#####索引#################
def func(request):
return render(request, "index.html", {
'current_user': "alex",
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})
index.html
<html>
..
<body>
<div>{{current_user}}</div>#索引用.
<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>
</body>
</html>
###### 条件
def func(request):
return render(request, "index.html", {
'current_user': "alex",
"age": 18,
'user_list': ['alex','eric'],
'user_dict': {'k1': 'v1', 'k2': 'v2'}})
index.html
<html>
..
<body>
<div>{{current_user}}</div>
<a> {{ user_list.1 }} </a>
<a> {{ user_dict.k1 }} </a>
<a> {{ user_dict.k2 }} </a>
{% if age %}
<a>有年龄</a>
{% if age > 16 %}
<a>老男人</a>
{% else %}
<a>小鲜肉</a>
{% endif %}
{% else %}
<a>无年龄</a>
{% endif %}
</body>
</html>
@@@作业
XXOO管理:
MySQL
SQLAlchemy
主机管理(8列):
IP
端口
业务线
...
用户表:
用户名
密码
功能:
1、 登录
2、主机管理页面
- 查看所有的主机信息(4列)
- 增加主机信息(8列) ** 模态对话框
3、查看详细(弹出页面)
url:
"detail" -> detail
def detail(reqeust):
nid = request.GET.get("nid")
v = select * from tb where id = nid
...
4、删除
del_host -> delete_host
def delete_host(request):
nid = request.POST.get('nid')
delete from tb where id = nid
return redirect('/home')