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)

2、urls.py 和  index.html

urlpatterns = [
    url(r'index/',views.index)
}   #路由系统
------------------------------------------------------------

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、查看数据库多了‘销售部’了吗

成功添加

 类代指表,对象代指数据

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏代码世界

MYSQL之库操作

一、系统数据库 information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等 my...

36170
来自专栏Linux运维学习之路

MySQL日志管理

MySQL日志管理 错误日志 配置方法: vim /etc/my.cnf [mysqld] log-error=/tmp/mysql.log 查看配置方式: s...

487120
来自专栏aoho求索

基于可靠消息方案的分布式事务(三):Lottor使用

前面两篇文章介绍了笔者关于可靠消息方案的分布式事务的实现思路以及Java中的事务概念,奈何工作抽不出时间,如今时隔已久,分布式事务系列拖了很久,一直没能好好把项...

9310
来自专栏LIN_ZONE

远程连接ubuntu mysql出现2003错误 cant connect to mysql(转载)

2.打开my.cnf文件,找到 bind-address = 127.0.0.1 在前面加上#注释掉,如下: #bind-address = 127.0.0....

24620
来自专栏我是攻城师

ElasticSearch的一些删除用法笔记

36870
来自专栏csxiaoyao

mysql 配置总结( linux & macos )

408110
来自专栏Laoqi's Linux运维专列

MySQL调优

45690
来自专栏pangguoming

centos6.8 mysql5.6.34 root密码重置

15550
来自专栏我和PYTHON有个约会

数据库最大连接数量

在数据库操作过程中,经常会遇到一些非业务逻辑错误,这样的错误要求开发人员对于自己正在操作的硬件软件乃至网络都有一定的了解,这里说说关于数据库最大连接数量的那点事...

11920
来自专栏JAVA同学会

MongoDB之分片集群(Sharding)

  分片(sharding)是一个通过多台机器分配数据的方法。MongoDB使用分片支持大数据集和高吞吐量的操作。大数据集和高吞吐量的数据库系统挑战着单一服务的...

32520

扫码关注云+社区

领取腾讯云代金券