• Django之常用命令以及问题汇总


    基本命令

    1、新建一个django项目

    django-admin.py startproject project-name

     2、新建一个app

    python manage.py startapp app-name

     3、同步数据库

    python manage.py syncdb

    注意:Django 1.7.1及以上的版本需要用以下命令
    python manage.py makemigrations
    python manage.py migrate

    这种方法可以创建表,当你在models.py中新增了类时,运行它就可以自动在数据库中创建表了,不用手动创建。
    备注:对已有的 models 进行修改,Django 1.7之前的版本的Django都是无法自动更改表结构的,不过有第三方工具south

     4、运行开发服务器

    python manage.py runserver 0.0.0.0:8000

     5、清空数据库

    python manage.py flush

    此命令会询问是 yes 还是 no, 选择 yes 会把数据全部清空掉,只留下空表。

     6、创建超级管理员

    python manage.py createsuperuser

     7、导出数据、导入数据

    python manage.py dumpdata appname > appname.json
    python manage.py loaddata appname.json

     8、django项目环境终端

    python manage.py shell

    如果你安装了bpython或者ipython,会自动调用他们的界面

     9、数据库执行命令

    python manage.py dbshell

    django会进行到settings中设置的数据库,如果是mysql或者postgresql,会要求输入用户名和密码

    在这个终端可以输入sql语句

     10、更多命令

    在终端上输入python manage.py 回车,就可以看到详细的列表

    问题收集:

    生成同步数据库的脚本:python manage.py makemigrations  

      同步数据库:  python manage.py migrate   

     注意:在开发过程中,数据库同步误操作之后,难免会遇到后面不能同步成功的情况,解决这个问题的一个简单粗暴方法是把migrations目录下

    的脚本(除__init__.py之外)全部删掉,再把数据库删掉之后创建一个新的数据库,数据库同步操作再重新做一遍。            

    提示: 如若要从models里修改表,可以再次运行

    python manage.py makemigrations

    python manage.py maigrate

    如果class里 字段没有默认值会报错,解决方式如下:

    age = models.IntegerField()  # 这里没写默认值
    报错:You are trying to add a non-nullable field 'age' to userinfor without a default; we can't do that (the database needs something to populate existing rows).
    Please select a fix:
     1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
     2) Quit, and let me add a default in models.py
    Select an option:
    选择2退出,或者age = models.IntegerField(null=True)  ; age = models.IntegerField(default=1) 设置空,或者默认值
    然后继续,python manage.py makemigrations
    python manage.py migrate

    对Django数据库操作的记录都在这:

    使用Model对数据库进行增删改查:

    1、views.py 访问index路径时,执行这个添加的函数

    def index(req):

    from app_01 import models
       #增
    # models.UserGroup.objects.create(title='销售部')
    # models.UserInfor.objects.create(user='root',password='pwd',age=18,ug_id=1)

    #查
    # group_list = models.UserGroup.objects.all()
      #group_list = models.UserGroup.objects.filter(id=1)
      # print(group_list)
      # 这里代码是从上至下执行,filter 是筛选器,配合了不起的 双下划线 __
      #group_list = models.UserGroup.objects.filter(id__gt=1).first() #只取第一个
      #group_list = models.UserGroup.objects.filter(id__lt=1)
      #删除
      # group_list = models.UserGroup.objects.filter(id=1).delete()
      #改
      group_list = models.UserGroup.objects.filter(id=1).update(title='打鸟不')
      group_list = models.UserGroup.objects.all()

    #group_list QuerySet类型(列表)
    #QuerySet类型[obj,obj,obj]
     # print(group_list)
    #for i in group_list:
    # print(i.id,i.title)
    #return HttpResponse("....ok") #这里将数据显示到了后台
      return render(req,'newindex.html',{'group_list':group_list}) #这里将数据显示到前端

    2、urls.py 和  index.html

    urlpatterns = [
        url(r'index/',views.index)
    }   #路由系统
    ------------------------------------------------------------
    {% for row in group_list %}
    <li>
    {{ row.id }}----{{ row.title }}
    </li>
    {% endfor %} #前端遍历代码

    3、models.py 外键约束

    # Create your models here.
    from django.db import models
    class UserGroup(models.Model):
    
        title = models.CharField(max_length=32)
    
        #一个部门可以对应多个用户
        # 一 对 多,  多的表 添加外键
    
    class UserInfor(models.Model):
       nid = models.BigAutoField(primary_key=True)
       user = models.CharField(max_length=32)
       password = models.CharField(max_length=64)
       age = models.IntegerField(default=1)
       ug = models.ForeignKey("UserGroup",null=True)
       #默认生成一个 ug_id 外键列

    4、查看数据库多了‘销售部’了吗

     

    成功添加

     类代指表,对象代指数据

    
    
  • 相关阅读:
    从前端回到了我的本专业网络
    相对定位与绝对定位的理解
    table( 表格)以及列表的使用
    使用editplus编写HTML页面为什么设置了UTF-8仍然中文乱码
    复习--3--对于第三堂课的总结--将两个页面相互用超链接链接到一起
    前端学习笔录--2--HTML篇--有点麻烦的加载图片
    前端学习笔录--1--HTML篇
    sublime text 有毒--无法使用快捷键利用浏览器打开HTML文件
    sublime text 插件
    sublime写网页代码,里面的中文字符会出现乱码
  • 原文地址:https://www.cnblogs.com/pyyu/p/7436092.html
Copyright © 2020-2023  润新知