关于大创项目的踩坑
001、Pycharm community 创建Django项目
如果你可以直接在pycharm中创建Django项目,略过这一步。
Pycharm 社区版不能直接创建Django项目!!我们要用命令行的方式!!
第一步:打开CMD,
第二步:找到自己想要建立项目的文件夹:
第三步:创建一个django project;
django-admin startproject mydjangoproject #创建一个名称为mydjangoproject的django项目
1
第四步:创建一个app:
django-admin startapp app01 #创建一个名称为app01的应用
1
此时,在对应文件夹我们的项目已经建好了。我们在Pycharm中点击File --> Open -->刚才创建的Django项目
我们就得到了这样一个初始的Django项目:
还没有结束!!我们要将它启动起来!
第五步:启动Django项目
在命令行中打开项目所在位置
执行一下这个:python manage.py migrate
踩坑:不执行可能会报以下的错!
System check identified no issues (0 silenced).
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for…
使用python manage.py runserver 8000运行Django项目,测试成功!!!
踩坑:如果运行python manage.py runserver 0.0.0.0:8000,Django会以为是公网来访问它,而实际上我是在本地访问,所以会访问失败!
在浏览器中输入127.0.0.1:8000
成功!!!
参考blog1
参考blog2
参考blog3
002TemplateDoesNotExist
django运行时报错,提示TemplateDoesNotExist,某个html文件不存在
当然我的html模板全部放在Templates目录中,通过错误信息可以看出,django是直接把我给的模板路径当作了绝对路径,自然找不到html文件。查看了项目setting文件后,看到了其中有关于Template的设置方法,其中包括一个‘DIRS’的选项,百度一下之后,得知需要把项目模板所在目录的路径添加到这里,代码:
'DIRS': [os.path.join(BASE_DIR, 'templates')],
其中BASE_DIR指项目的db.sqlite3所在的目录,后面是模板目录相对db.sqlite3的路径。
解决!!
003Cannot connect to Database Server
使用MySQL Workbench想打开本地连接,结果报错:Cannot connect to Database Server,解决方案如下:
①检查mysql的服务是否运行
输入指令:services.msc,可以打开服务管理器,查看服务是否开启,如果没有开启则手动开启
我是进行完第一步后就可以建立连接了!
②检测默认的端口号是否是3306,可以在my.init文件中查看该属性的值
③检测是否有权限访问该地址
mysql -u root -p -h ip地址 -p 端口号,输入密码后可以测试是否可以访问数据库
④设置了密码并使用了正确的密码进行登陆
004 Django Admin 管理工具创建超级用户时,密码不显示
其实,输入的时候并不是没有反应,只是你输入的时候命令行没有将你的输入显示出来,关键是输入行对Password:********也不是采用这种方式隐藏,而是完全的空白。所以即使按键盘感觉没有反应你也要先输入password,再按回车这时会出现password(again),如果出现Error: Your passwords didn’t match.说明两次输入的密码不同,如出现Superuser created successfully.则说明已经success.
005 关于老师给的mysql文件夹的问题
在启动老师给的代码后,会弹出一个登录界面,需要输入用户名和密码进行登录,如图:
不知道用户名密码是什么? 回想一下:那个mysql文件夹中有个test 文件夹,里面有三张表,其中两张是我们在Django中创建表结构时自动生成的。还有一张user表,我们通过项目中的model可知,它有两个字段username和password,据此分析出user表中存放着我们登录用的信息!
不要高兴! 我们发现user是一个ibd文件,也就是存放表结构的二进制文件,也就是底层文件,我们无法直接打开,那该如何?
首先,我们要清楚ibd文件一般是用来恢复数据的,当我们的数据库受损,或是由于意外情况导致数据丢失,我们就可以通过ibd文件来恢复数据! 在查阅了大量的资料以后,找到以下一种比较合理且简洁的方法:
此方法mysql5.7版本以上适用。
假如你的数据库表都没了,而mysql目录下的data中.ibd还在的话,你可以试试此方法。
创建一个新的数据库
创建一个表(表名与待恢复的表名相同),字段结构跟丢失的一样,
进入该数据库,删除该表空间
例如: ALTER TABLE project DISCARD TABLESPACE;
project是我的表
将project.ibd复制到新建的数据库下,执行命令,导入表空间。
ALTER TABLE project IMPORT TABLESPACE;
这时候查看表,数据就显示出来了
但是!我用这种方法没有成功,它报了以下错误:
1808 - Schema mismatch (Clustered index validation failed. Because the .cfg file is missing, table definition of the IBD file could be different. Or the data file itself is already corrupted.)
译文:1808-架构不匹配(聚集索引验证失败)。由于缺少.cfg文件,IBD文件的表定义可能不同。或者数据文件本身已经损坏。)
无奈,询问老师和学姐,她们那里也没有.frm文件,老师说可能是原来的毕业生弄丢了这个文件。。
学姐建议新建数据库,自己定义username和password,并修改Django中相应的xml文件和model与setting.
首先在pycharm中连接数据库,(因为pycharm与idea是都是Jet Brains 的产品,所以界面风格基本一致,在maven项目中,我们可以在左边看到DataBases,然后就可以连接数据库),但在pycharm中我找了半天没找到。这是因为我们没有下载database插件!
首先 我们先把 databases 整出来(参考自csdn)
第一步,打开设置
第二步,打开plugins,搜索database sql,每个版本出来的软件可能不一样,我的是这个:
然后,就成功了,打开View下的Tool Windows 发现多了一个 DB Browser,点开
选中MySQL就可以开始添加数据库了,问题解决。
其次,建立数据库,建表
使用MySQL图形化界面建立一个名为test 的数据库(当然,你也可以起其他的名字,但别忘了修改Django中相关的内容)
前文提到过,我们从Django的model中得知test的数据库中有一个名为user的表,user表中有username和password字段,在创建表示,别忘了再加上id字段,它在这里是默认递增的!
在pycharm中连接数据库,选中test数据库,进行下一步:
调整表结构
找到pycharm下方的Terminal输入
python manage.py migrate
出现以下信息:
加载完成后,我们会看到test数据库中自动生成了很多表!
在可以启动项目,看看用户界面了!
pycharm下方的Terminal输入:python manage.py runserver 8000(启动Django项目,开头提到过)
我们点击链接就可以在浏览器打开!
输入我们保存在user表中的username与password就可以登录上去了!