第二、三周问题集锦

作者: 布拉豆 | 来源:发表于2017-04-08 20:11 被阅读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教程、教程--传送门

    相关文章

      网友评论

        本文标题:第二、三周问题集锦

        本文链接:https://www.haomeiwen.com/subject/utplattx.html