Spbeen——Python技术栈

第二、三周问题集锦

2017-04-08  本文已影响115人  布拉豆

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安装问题

  1. Django安装失败
    答:安装django时,请先更新pip,代码pip install --upgrade pip

  2. 直接执行pip显示无法找到此命令
    答:python3.5是自动安装pip的,直接输入pip无法执行,是系统的环境变量未配置,需要手动配置,或者重装python3.5并且勾选add to system path。

  3. 我当前环境是python2.7,切换3.5是不是需要卸载2.7?
    答:不需要,直接安装python3.5,然后环境配置中删除2.7的路径就可以了。

  4. 执行python manage.py runserver之后,为什么一直没出现error、没输出结果?
    答:项目启动之后,会一直阻塞监听端口请求【默认是8000端口】。停在监听界面后,可以打开浏览器输入localhost:8000,然后再查看刚才的监听界面,会出现一些请求和200的字样,表示有请求接入。

Django项目问题

  1. 启动成功,但是向文章表格中插入中文失败
    答:python3.5对中文是兼容的,但是python2.7是不兼容的。建议使用python3.5.

  2. 图片等静态文件加载失败
    答:html中需要接入{% load staticfiles %},并且在使用静态文件中加入static字样,例如href="{% static 'css/semantic.css' %}"

  3. models.py添加新的models之后,在amdin界面中没有显示
    答:添加新的models或者修改了原有的models,都需要使用makemigrations和migrate命令重新对数据库进行调整。
    示例【按顺序来】:python manage.py makemigrations
    python manage.py migrate

  4. 无法登陆admin的目录,哪来的账号密码?
    答:需要用mangage.py创建超级管理员账号密码
    命令提示:python manage.py createsuperuser

  5. 创建models时出现一个二选一的情况,为什么呢?
    答:目前收集到的问题是,在创建models时,设置字段不能为空,但是又没有设置默认值,就出现二选一的状况。一是将不为空属性改成可为空,二是创建一个临时的默认值。

  6. 我创建的Article类检查无误,但是运行时却报错,Article没有object这个属性
    答:object是错的,objects才是正确的属性

  7. 我修改了models,在使用makemigrations和migrate命令时,却显示No changes detected没有任何更改
    答:在这种情况下,可以删掉当前app下migrations目录内部的所有文件,然后用命令python manage.py makemigrations --empty app名初始化一个迁移策略的初始化库文件,然后再次使用python manage.py makemigrationspython manage.py migrate

  8. django中models的外键关联的区别
    答:OneToOne是一一对应的关系,在UserProFile中,一一对应User表格进行用户信息的拓展,在使用的过程,也就是直接。【在这里报错也是很多,特别是UserProFiel有记录已经对应了User表格的某条记录,代码中又有新建关联的操作,这个报错不明智。】

  9. 数据库表格的新建和修改
    答:数据库新建一个数据,就是初始化一个类,将需要的参数传入,然后保存,这个就是新建。
    修改的操作就是基于现有数据进行修改,所以第一步操作是先得到要修改的数据实例,例如cuser = User.objects.get(username=currentusername)这样就得到了一个username等于currentusername的数据实例cuser,然后修改它的密码,就是cuser.password=currentpassword,这里是将currentpassword覆盖掉原来password里面的值,最后保存cuser.save(),到这呢,修改密码的操作就完成了

  10. Mac下,运行django项目,报错没有找到 rest_framework
    答:需要安装一个python库,pip install djangorestframework

  11. django的路由系统,匹配规则
    答:^是开始标志,$是结尾标志,支持正则表达式【需要额外学习正则】

  12. 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>

补充:网页代码问题

  1. 鼠标悬停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教程、教程--传送门

上一篇下一篇

猜你喜欢

热点阅读