创建django 项目
django-admin startproject mysite
目录介绍
mysite
- mysite # 对整个程序进行配置
- init
- settings # 配置文件
- url # URL对应关系
- wsgi # 遵循WSIG规范,生产环境中一般不用django自带的wsgi,而是这个uwsgi + nginx
- manage.py # 管理Django程序:
- python manage.py
- python manage.py startapp xx
- python manage.py makemigrations
- python manage.py migrate
创建app
python manage.py startapp cmdb
cmdb:
migrations 数据修改表结构,django根据这个来判断表是否有改动,有改动就可以通过命令更新数据库中的表结构
admin Django为我们提供的后台管理
apps 配置当前app
models ORM,写指定的类 通过命令可以创建数据库结构
tests 单元测试
views 业务代码
创建完项目后的基本配置:
数据库
1 DATABASES = { 2 ‘default‘: { 3 ‘ENGINE‘: ‘django.db.backends.mysql‘, 4 ‘NAME‘:‘dbname‘, 5 ‘USER‘: ‘root‘, 6 ‘PASSWORD‘: ‘xxx‘, 7 ‘HOST‘: ‘‘, 8 ‘PORT‘: ‘‘, 9 } 10 }
数据库
# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
# 如下设置放置的与project同名的配置的 __init__.py文件中
import
pymysql
pymysql.install_as_MySQLdb()
模板
1 TEMPLATE_DIRS = ( 2 os.path.join(BASE_DIR,‘templates‘), 3 ) 4 #这里就是配置模板文件夹的可以将 ‘templates’改成自己的
模板文件夹配置
静态文件
1 STATIC_URL = ‘/static/‘ 2 STATICFILES_DIRS = ( 3 os.path.join(BASE_DIR,‘static‘), 4 )
定义静态文件
路由系统:
视图基本方法:
1 def func(request): 2 # request.method GET / POST 3 4 # http://127.0.0.1:8009/home?nid=123&name=alex 5 # request.GET.get(‘‘,None) # 获取请求发来的而数据 6 7 # request.POST.get(‘‘,None) 8 9 10 # return HttpResponse("字符串") 11 # return render(request, "HTML模板的路径",{"obj":obj 给前端模板传递参数这里也可以用locals()传递所有本地变量}) 12 # return redirect(‘/只能填URL /home) 这里就又转发给url,然后转给home视图
获取数据基本方法
request.POST
request.GET
request.FILES
获取checkbox和select多选参数 request.POST.getlist(‘city‘)#获取的name 上传文件 # 上传文件,form标签做特殊设置增加enctype="multipart/form-data obj = request.FILES.get(‘image‘) obj.name #输出文件名字,如果打印obj实际返回的也是文件名,因为在类中定义了__str__或__repr__ 来指定类返回的输出,str优先级高于repr #obj的type ===》<class ‘django.core.files.uploadedfile.InMemoryUploadedFile‘> f = open(obj.name, mode=‘wb‘) for item in obj.chunks(): f.write(item) f.close()
模板渲染基本方式:
获取变量 <div>{{current_user}}</div> for循环 {% for k,v in user_list.items %} {{ k }}:{{ v }} {% endfor %} if判断,注意模板语言中的空格不能少 {% if row == "zhangs" %} <li>{{ row }}</li> {% else %} <li>else 不需要end</li> {% endif %} 获取字典或列表指定值 <a> {{ user_list.1 }}等同于list[1] </a>、 <a> {{ user_dict.k1 等同于dict[‘k1‘]}} </a> <a> {{ user_dict.k2 }} </a>