django是一个python语言开发的web框架。 主要的组件以及特点
强大的数据库功能自带后台管理功能优雅的网址模板系统缓存系统国际化安装python2.7或者python3均可,安装pip(默认都有啦)
默认安装最新版
(sudo) pip install django
指定版本安装
(sudo) pip install django==1.11.11
安装如果遇到速度太慢或者超时,可以使用国内镜像安装
(sudo) pip install django -i https://pypi.doubanio.com/simple/
安装后就可以下一步搭建项目
mkdir django_test
cd django_test
django-admin.py startproject family
python manage.py runserver 或者指定端口 python manage.py runserver 8081
在浏览器输入 http://127.0.0.1:8000/ 就可以打开看到 It worked! 字样,表示django项目创建成功
python manage.py startapp family_app
注意点:工程名中不能有中划线
需要在family/settings.py中做一些配置
默认我们本地都安装了mysql(建议5.6+) 在DATABASES字典中注释掉自带的数据库,使用我们自己配置的mysql
'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'family_app', 'USER': 'wanglei', 'PASSWORD': 'xxxxxx', 'HOST': '127.0.0.1', 'PORT': '3306' },注意点:如果mysql版本是5.7+,需要在family/init.py中加入
import pymysql pymysql.install_as_MySQLdb()原因是直接使用mysql和mysqlDb的不兼容,不能直接使用mysqlDb模块,需要使用pymysql替代
python manage.py migrate
到此为止,整个项目和工程的基本配置就完成了。
将后端返回的结构化数据渲染到模板上
在family_app目录下创建templates目录,管理前端模板在family/settings.py的TEMPLATES中DIRS列表中加入’family_app/templates’在templates目录下创建index.html文件,并写代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div> <h3>这就是后端返回的数据 {{ data }}</h3> </div> </body> </html> family_app/views.py中修改响应的方式 return render(request, 'index.html', {'data': ret_str})一个简单的模板渲染就完成了
family_app/views.py
ret_str = ["hello world", "1024"] return render(request, 'index.html', {'data': ret_str})templates/index.html
<div> {% for item in data %} <p>{{ item }}</p> {% endfor %} </div> 字典渲染 family_app/views.py ret_str = {"k1": "hello", "k2": "world", "k3": "1024"} return render(request, 'index.html', {'data': ret_str})templates/index.html
遍历取值 <div> {% for key, val in data.items %} <p>key:{{ key }} val:{{ val }}</p> {% endfor %} </div> 按key取值 <div> {{ data.k3 }} </div>4 包含静态资源的模板渲染
在以上的基础上,我们加上js和css的操作
在family_app目录下创建static目录,管理静态资源在family/settings.py中添加 STATIC_ROOT = os.path.join(BASE_DIR, "family_app/static") 在family_app/static/index.js,并添加代码 function click_submit() { alert("别点了!"); } 在family_app/static/index.css,并添加代码 .list-css { margin-left:200px; } 在index.html中添加 {% load static %} <link rel="stylesheet" href="{% static 'index.css' %}" type="text/css"> <script src="static/index.js"></script> <div onclick="click_submit()">点击按钮</div>以上就是前端静态资源在页面加载过程中的具体配置方式
先不使用django的model,我们自己连接数据库去请求
以上开发和配置完成后浏览器访问 http://127.0.0.1:8000/get_user_info?number=1000 就可以看到数据库中的数据在页面的渲染
终端执行命令创建超级管理员并登陆
python manage.py createsuperuser
然后在http://127.0.0.1:8000/admin中登陆进入后台管理界面
例如需要在后台管理我们创建的family_app.user表,做一些常规的增删改查。
python manage.py startapp family_user_admin
并将该工程注册到 family/settings.py的INSTALLED_APPS列表中
将我们的family_app.user表结构中需要我们修改的字段映射到发model中
check_status = ( (0, '不生效'), (1, '生效'), ) class MyUser(models.Model): id = models.BigIntegerField(verbose_name='id', editable=False, primary_key=True, unique=True) number = models.BigIntegerField(verbose_name='用户number', editable=True) name = models.CharField(verbose_name='用户名', max_length=1024, blank=True) mobile = models.CharField(verbose_name='电话', max_length=1024, blank=True) status = models.IntegerField(verbose_name='用户状态', choices=check_status) class Meta: db_table = 'user'将我们model中的需要展示和修改的字段添加到管理界面中
from models import MyUser class MyUserAdmin(admin.ModelAdmin): list_display = ('number', 'name', 'mobile', 'status') search_fields = ('number', 'name', 'mobile') def has_delete_permission(self, request, obj=None): return False admin.site.register(MyUser, MyUserAdmin)操作完以上步骤后在admin界面中可以看到我们的新增的管理模块MyUsers,点击进去就可以看到配置的信息,可以做增删改查操作
初版写在 http://www.coral66.com/#/blogDetail/1 中,持续更新中。。。