第二、三周问题集锦
HTTP状态码:
200系列:200、201.....代表成功
300系列:304.......代表没有修改
400系列:404.......代表没找到
500系列:500、502.......代码服务不响应
- makemigrations和migrate的区别
答:makemigrations 的意思是将model编译成mysql可以理解的sql语句。存放在那个文件夹里面。migrate是将这个最新生成的py文件执行,让数据库能够按照sql语句进行表的修改。由于sql语句中有很多的标点符号是和python冲突的,经常需要转义数据库才能执行。因此直接使用model模块可以省去你很多书写sql语句的烦恼
Django安装问题
-
Django安装失败
答:安装django时,请先更新pip,代码pip install --upgrade pip
-
直接执行pip显示无法找到此命令
答:python3.5是自动安装pip的,直接输入pip无法执行,是系统的环境变量未配置,需要手动配置,或者重装python3.5并且勾选add to system path。 -
我当前环境是python2.7,切换3.5是不是需要卸载2.7?
答:不需要,直接安装python3.5,然后环境配置中删除2.7的路径就可以了。 -
执行
python manage.py runserver
之后,为什么一直没出现error、没输出结果?
答:项目启动之后,会一直阻塞监听端口请求【默认是8000端口】。停在监听界面后,可以打开浏览器输入localhost:8000,然后再查看刚才的监听界面,会出现一些请求和200的字样,表示有请求接入。
Django项目问题
-
启动成功,但是向文章表格中插入中文失败
答:python3.5对中文是兼容的,但是python2.7是不兼容的。建议使用python3.5. -
图片等静态文件加载失败
答:html中需要接入{% load staticfiles %}
,并且在使用静态文件中加入static字样,例如href="{% static 'css/semantic.css' %}"
。 -
models.py添加新的models之后,在amdin界面中没有显示
答:添加新的models或者修改了原有的models,都需要使用makemigrations和migrate命令重新对数据库进行调整。
示例【按顺序来】:python manage.py makemigrations
python manage.py migrate
-
无法登陆admin的目录,哪来的账号密码?
答:需要用mangage.py创建超级管理员账号密码
命令提示:python manage.py createsuperuser
-
创建models时出现一个二选一的情况,为什么呢?
答:目前收集到的问题是,在创建models时,设置字段不能为空,但是又没有设置默认值,就出现二选一的状况。一是将不为空属性改成可为空,二是创建一个临时的默认值。 -
我创建的Article类检查无误,但是运行时却报错,Article没有object这个属性
答:object是错的,objects才是正确的属性 -
我修改了models,在使用makemigrations和migrate命令时,却显示
No changes detected
没有任何更改
答:在这种情况下,可以删掉当前app下migrations目录内部的所有文件,然后用命令python manage.py makemigrations --empty app名
初始化一个迁移策略的初始化库文件,然后再次使用python manage.py makemigrations
和python manage.py migrate
-
django中models的外键关联的区别
答:OneToOne是一一对应的关系,在UserProFile中,一一对应User表格进行用户信息的拓展,在使用的过程,也就是直接。【在这里报错也是很多,特别是UserProFiel有记录已经对应了User表格的某条记录,代码中又有新建关联的操作,这个报错不明智。】 -
数据库表格的新建和修改
答:数据库新建一个数据,就是初始化一个类,将需要的参数传入,然后保存,这个就是新建。
修改的操作就是基于现有数据进行修改,所以第一步操作是先得到要修改的数据实例,例如cuser = User.objects.get(username=currentusername)
这样就得到了一个username等于currentusername的数据实例cuser,然后修改它的密码,就是cuser.password=currentpassword
,这里是将currentpassword覆盖掉原来password里面的值,最后保存cuser.save()
,到这呢,修改密码的操作就完成了 -
Mac下,运行django项目,报错没有找到 rest_framework
答:需要安装一个python库,pip install djangorestframework -
django的路由系统,匹配规则
答:^是开始标志,$是结尾标志,支持正则表达式【需要额外学习正则】 -
django表单的错误提示
答:课件提供的代码,错误提示是字段名,错误提示是中文,对应的错误栏,也是英文的好。修改后的代码如下:
<form action="" method="post" class="ui error form">
<!-- {% if comment_form.errors %}
<div class="ui error message">
{% for field in comment_form %}
{{ field.label }}{{ field.errors }}
{{ comment_form.errors }}
{% endfor %}
</div>
{% endif %} -->
{% for field in comment_form %}
<div class="{{ field.errors|yesno:'error field,field' }}">
{{ field.label }}{{ field.errors }}
{{ field }}
</div>
{% endfor %}
{% csrf_token %}
<button type="submit" class="ui red button">提交</button>
</form>
补充:网页代码问题
- 鼠标悬停Categories,显示life和tech,但是鼠标无法移动到life和tech上,咋办?
答:修改代码,拉近Categories和life的距离
.ui.simple.dropdown:hover > .menu{
top:70% !important;
}
Django设置时区:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
Python教程、教程--传送门