django+xadmin在线教育平台(四)
3-2 配置表单页面
必要的该说的,该了解的
前置条件:
你已经学习了前面教程。将项目的文件夹目录结构,setting配置等修改完毕与我保持一致。
本节通过Django快速的配置一个留言板页面来学习
Django从请求到响应的整个完整流程。为我们开发在线教育平台打下基础。
上图便是本节教程所要用到的静态页面: 前往Github下载:form.html
具体的业务:填写信息 -> 然后点击提交 ->数据被存储到数据库。
这个html
是一个单文件,里面已经包含了css
js
内容。
将html文件整合进项目操作步骤
将html
文件直接复制进templates
目录.
创建static目录下的css文件夹
和 static/js
- 在css中再新建一个
style.css
form.html
中点击<style>
标签左侧减号。将style内容收成一行。然后把这一行内容剪切粘贴到style.css
粘贴进去之后,将首尾两个
<style>
删除,shift + tab
可以将css格式化更整齐。在
form.html
新建<link>
来引入css。(文件里其实已经先加上了,学一种操作而已)
<link rel="stylesheet" href="/static/css/style.css">
配置Django连接Mysql数据库
在setting.py
大概80行找到:
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
这是Django默认与自己项目根目录下的db.sqlite3
连接的设置。
我们的项目是与mysql
连接,所以我们要改成如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'testdjango', 'USER': 'root', 'PASSWORD': '密码', 'HOST': "127.0.0.1" } }
其中的name
应设置为我们中在Navicat中新建的数据库名字。名字一定要保持一致
这时要将我们之前建的表提前全部删除掉。
配置mysql驱动和seeting文件。
点击Tools 菜单下 Run manage.py Task
我们会发现报错了:
raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
由错误信息我们可以看出是因为没有安装数据库驱动模块
MySQLdb
cmd
下workon
进我们的虚拟环境目录。pip install mysql-python
然后会发现报错:
_mysql.c(42) : fatal error C1083: Cannot open include file: 'config-win.h':
No such file or directory error: command '"C:\Users\mtian\AppData\Local\Programs\Common\Microsoft\Visual C ++ for Python\9.0\VC\Bin\amd64\cl.exe"' failed with exit status 2
前往地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python
下载MySQL_python_1.2.5_cp27_none_win_amd64.whl
到本地,放到桌面。
然后使用下面命令进行安装:注意是在虚拟环境下。
cd Desktop
pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
这个时候我们再次点击Tools 菜单下 Run manage.py Task
会看到已经没有刚才的错误。
但是会有红框里的警告,面向强迫症解决方案是在setting.py
新增STATIC_ROOT = '/static/'
但其实现在还没有用到这个参数。后面用到我们再配置。(推荐自行克服强迫症)
输入下面命令来生成表:
makemigrations
migrate
这时我们去Navicat查看会发现为我们生成了很多表。
这些都是Django系统默认的内置数据表。
做完这些操作我们可以点击Run
来运行项目,
然后到http://127.0.0.1:8000/
来访问看是否运行成功。成功页面(It worked)
配置form页面展示出来:
DjangoGetStarted/urls.py
修改如下:
urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^form/$', getform) #这行是新增加的.
]
新增加url(r'^form/$', getform)
,^
是代表以form
为开头,$
代表以/
结尾的地址。
这里getform
是对于这个url
的相应处理的view
。我们先去创建一个.
message/views.py
添加如下代码:
def getform(request): return render(request, 'message_form.html')
request
参数是一个django的http request
对象。(基础)
这里我们可以按住ctrl
+ 左键
跟踪到我们的render
函数里面。
Alt + 左箭头
回来。
def render(request, template_name,...):
源代码解读:可以看到我们的render
需要一个request对象
和template_name
参数
注意:记性好的还记得我们提供的源文件是form.html
知识点:django内置了很多html页面,form会先从内置中寻找。所以我们得改。
因此我们需要右键如下图Refactor
修改from.html
为message_form
如果我们的项目在运行,ctrl + s
会自动重启我们的项目。
这时我们有了view,我们可以去配置完整的url了(前面已经配完整的检查一遍):
DjangoGetStarted/urls.py
from message.views import getformurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^form/$', getform) ]
这里我们不能加括号否则会变成方法的调用。
按住ctrl
+ render
跟踪到我们的url
函数里面查看源码如下:可以看到它除过一组正则表达式,还需要接收一个view对象。
def url(regex, view,...):
如果getform
加上括号会报错:
TypeError: getform() takes exactly 1 argument (0 given)
访问http://127.0.0.1:8000/
正常结果:Page not found
Using the URLconf defined in DjangoGetStarted.urls, Django tried these URL patterns, in this order: ^admin/ ^form/$
是因为我们在url中加入了个人的配置^form/$
,它就不会采用默认配置了。
原因:(源码探究标记点)
这时访问:http://127.0.0.1:8000/form/
旧版本pycharm会报:TemplateDoesNotExist
错误。我的新版本pycharm并没有出现。
重要代码在DjangoGetStarted/settings.py
60行左右
# 指明我们的templates目录路径
'DIRS': [os.path.join(BASE_DIR, 'templates')]
# 老版本pycharm创建django项目该值为空。
现在再次访问 http://127.0.0.1:8000/form/
页面出来了但是样式没有。static目录下的css文件提示没有找到。
Setting中静态文件的配置,这是因为我们setting中的
STATIC_URL = '/static/'
只说明了目录的名称。并没有指明查找的根路径。添加下面代码:
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')
]
过程中看似不停的出错,其实是为了让大家更好记住该记住的。
项目配置流程图
我们刚才是以倒序:
- 把html文件放进来
- 通过简单的url配置来访问html。
- 发现找不到页面,所以我们设置setting中
DIRS
- 文件找到了又说找不到静态文件,我们设置了
STATICFILES_DIRS
这是我们的整体流程图,推荐新建一个项目再按照正向流程图来一遍。
后面我们的工作会围绕从migration生成数据表往下的内容
展开。
原文学习来自简书,作者:天涯明月笙
原文链接:https://www.jianshu.com/p/783ac2f28027
转载于:https://www.cnblogs.com/xinjie57/p/9180513.html
django+xadmin在线教育平台(四)相关推荐
- django+xadmin在线教育平台慕学网(二)
三.xadmin后台管理 3.1 .xadmin的安装 github下在xadmin源码:下载地址 下载完成之后,解压复制xadmin文件夹 3.2.xadmin配置 (1)新建python pack ...
- django+xadmin在线教育平台(十二)
6-4 用form实现登录-1 上面我们的用户登录的方法是基于函数来做的.本节我们做一个基于类方法的版本. 要求对类的继承有了解. 基础教程中基本上都是基于函数来做的,其实更推荐基于类来做.基于类可以 ...
- django+xadmin 在线教育网站(三)
在此之前我们已成功的使用xadmin将后台管理系统搭建起来了,接下来,开始我们后台的功能处理 首先是登录功能 登录功能 (1)把html文件中index.html和login.html拷贝到templ ...
- Django打造在线教育平台_day_4: 找回密码
1.form.py验证输入 from django import forms from captcha.fields import CaptchaFieldclass ForgetForm(forms ...
- Django搭建在线教育平台(一)
一.环境搭建 安装mysql 安装python 安装navicat 二.虚拟环境virtualenv virtualenv优点: 使用不同应用开发环境独立 环境实际不影响其他应用,也不影响全局的Pyt ...
- django+xadmin 在线教育网站(二)
在之前我们已经把项目所需的基本配置,已配置,接下来是此项目的重点配置(xadmin),我们将用xadmin,实现快速搭建后台管理系统 首先是xadmin的安装,github下载 xadmin下载链接地 ...
- Django+xadmin打造在线教育平台(十)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
- 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...
第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...
- 第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成...
第三百七十七节,Django+Xadmin打造上线标准的在线教育平台-apps目录建立,以及数据表生成 apps目录建立 我们创建一个apps目录,将所有的app放到apps目录里去,这样方便管理,也 ...
- 第三百八十九节,Django+Xadmin打造上线标准的在线教育平台—列表筛选结合分页...
第三百八十九节,Django+Xadmin打造上线标准的在线教育平台-列表筛选结合分页 根据用户的筛选条件来结合分页 实现原理就是,当用户点击一个筛选条件时,通过get请求方式传参将筛选的id或者值, ...
最新文章
- android web3j 代币查询_wallet-eth 以太坊代币钱包 助记词 私钥 keystore 转账
- Kali Linux安装谷歌输入法
- 表盘时针的html代码,html5画布操作的简单学习-简单时钟
- [转]Python 获取Windows管理员权限
- 【JavsScript】作用域链
- uniapp对象怎么获取值_Uniapp使用GoEasy实现websocket实时通讯
- gsonformat java代码_插件GsonFormat快速實現JavaBean
- 随机过程第2讲——马尔可夫过程的应用
- FDS学习笔记(一)FDS中的基本概念
- 以下sum函数用来求a,b两数的和,在主函数中输入两个数并调用sum函数求其和。
- NSUOJ2888最小唯一表示前缀(偷懒的xzj)
- 蓝牙协议之配对和绑定学习笔记
- DAU和MAU的分析
- 今年努力在做的两件事
- 电脑拓展显示器软件显示不清晰问题
- 12个球,其中一个和其他的重量不一样,有一个天平,最多几次找出这个球
- java.nio.charset.MalformedInputException: Input length = 2
- Serv-U的反弹攻击及其利用时间:2006-12-20 11:09来源:中国网管联盟 作者:网管整理 点击:899次...
- c语言旅店管理系统结构图,C语言 旅店管理系统.doc
- spark (3)Spark Standalone集群安装介绍