django使用

mac2022-06-30  23

1、django报错"GET /static/plugins/bootstrap/css/bootstrap.css HTTP/1.1" 404 1718,

然后引用的Bootstrap一直不出来,页面中的静态资源无法加载,

报这个错的原因,是因为配置setting时候没有配置好。

后面在seeting里面添加下面这段就好了

STATICFILES_DIRS = ( 

os.path.join(BASE_DIR, "static"), 

 

2、Django中DATABASES配置

2.1Django默认使用SQLite,在settings.py文件中,通过DATABASES选项进行数据库配置

DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "test", "USER": "root", "PASSWORD": "123456", "HOST": "x.x.x.x", "PORT" : "3306" , }}2.2需要安装python中mysql的库pip install mysql3、django中templates设置配置   调用     4、django中static调用

 

 配置

 

 

调用

 

5、jquery使用注意的问题

 

 

 

 6、django中orm源sql如何查看?

 

 

 

In [1]: from django.contrib.auth.models import User In [2]: User.objects.all()[0]Out[2]: <User: admin> In [3]: from django.db import connection In [4]: connection.queries Out[4]:[{'sql': u'SELECT `auth_user`.`id`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `auth_user`.`email`, `auth_user`.`password`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`is_superuser`, `auth_user`.`last_login`, `auth_user`.`date_joined` FROM `auth_user` LIMIT 1','time': '0.109'}]

 

7、如何查看数据迁移时,模型中的源sql?

7.1、在models中定义模型

class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): return self.nameclass Author(models.Model): name = models.CharField(max_length=200) email = models.EmailField() def __str__(self): return self.nameclass Entry(models.Model): blog = models.ForeignKey(Blog, on_delete=models.CASCADE) headline = models.CharField(max_length=255) body_text = models.TextField() pub_date = models.DateField() mod_date = models.DateField() authors = models.ManyToManyField(Author) n_comments = models.IntegerField() n_pingbacks = models.IntegerField() rating = models.IntegerField() def __str__(self): return self.headline

 

7.2、使用makemigrations、migrate进行数据迁移; sqlmigrate查看模型中的源sql : usermnge代表app名称, 0001代表makemigrations生成的版本文件0001_initial.py

manage.py@modelTest > sqlmigrate usermnge 0001"D:\Program Files\PyCharm 2018.1.4\bin\runnerw.exe" "D:\Program Files\python3.6.7\python.exe" "D:\Program Files\PyCharm 2018.1.4\helpers\pycharm\django_manage.py" sqlmigrate usermnge 0001 D:/pythonWorkspace/modelTestTracking file by folder pattern: migrationsBEGIN;---- Create model Author--CREATE TABLE `usermnge_author` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(200) NOT NULL, `email` varchar(254) NOT NULL);---- Create model Blog--CREATE TABLE `usermnge_blog` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(100) NOT NULL, `tagline` longtext NOT NULL);---- Create model Entry--

CREATE TABLE `usermnge_entry` ( `id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `headline` VARCHAR (255) NOT NULL, `body_text` LONGTEXT NOT NULL, `pub_date` date NOT NULL, `mod_date` date NOT NULL, `n_comments` INTEGER NOT NULL, `n_pingbacks` INTEGER NOT NULL, `rating` INTEGER NOT NULL, `blog_id` INTEGER NOT NULL);

CREATE TABLE `usermnge_entry_authors` ( `id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `entry_id` INTEGER NOT NULL, `author_id` INTEGER NOT NULL);

ALTER TABLE `usermnge_entry` ADD CONSTRAINT `usermnge_entry_blog_id_034b0324_fk_usermnge_blog_id` FOREIGN KEY (`blog_id`) REFERENCES `usermnge_blog` (`id`);

ALTER TABLE `usermnge_entry_authors` ADD CONSTRAINT `usermnge_entry_authors_entry_id_9c526204_fk_usermnge_entry_id` FOREIGN KEY (`entry_id`) REFERENCES `usermnge_entry` (`id`);

ALTER TABLE `usermnge_entry_authors` ADD CONSTRAINT `usermnge_entry_authors_author_id_1491bafd_fk_usermnge_author_id` FOREIGN KEY (`author_id`) REFERENCES `usermnge_author` (`id`);

ALTER TABLE `usermnge_entry_authors` ADD CONSTRAINT `usermnge_entry_authors_entry_id_author_id_7b6463ae_uniq` UNIQUE (`entry_id`, `author_id`);

COMMIT;

Process finished with exit code 0

manage.py@modelTest >

 

 

8、模型表中OneToOneField的源sql?

class Student(models.Model): name = models.CharField(max_length=50)class Achieve(models.Model): mark = models.FloatField() student = models.OneToOneField(to=Student, on_delete=models.CASCADE)

 

 

执行makemigrations后,产生0002_achieve_student.py, 在manage.py console中查看0002_achieve_student.py对应的源sqlmanage.py@modelTest > sqlmigrate usermnge 0002"D:\Program Files\PyCharm 2018.1.4\bin\runnerw.exe" "D:\Program Files\python3.6.7\python.exe" "D:\Program Files\PyCharm 2018.1.4\helpers\pycharm\django_manage.py" sqlmigrate usermnge 0002 D:/pythonWorkspace/modelTestTracking file by folder pattern: migrationsBEGIN;---- Create model Student--CREATE TABLE `usermnge_student` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` varchar(50) NOT NULL);---- Create model Achieve--

CREATE TABLE `usermnge_achieve` ( `id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `mark` DOUBLE PRECISION NOT NULL, `student_id` INTEGER NOT NULL UNIQUE);

ALTER TABLE `usermnge_achieve` ADD CONSTRAINT `usermnge_achieve_student_id_8d012c32_fk_usermnge_student_id` FOREIGN KEY (`student_id`) REFERENCES `usermnge_student` (`id`);

COMMIT;

Process finished with exit code 0

 

 

9.两个表,多对多的相互查询?

模型如下:

class Person(models.Model): name = models.CharField(max_length=128) def __str__(self): return self.nameclass Group(models.Model): name = models.CharField(max_length=128) members = models.ManyToManyField(Person, through='Membership') def __str__(self): return self.nameclass Membership(models.Model): person = models.ForeignKey(Person, on_delete=models.CASCADE) group = models.ForeignKey(Group, on_delete=models.CASCADE) date_joined = models.DateField() invite_reason = models.CharField(max_length=64)

视图如下:

def test1(request): ringo = Person.objects.create(name="Ringo Starr") print(connection.queries) paul = Person.objects.create(name="Paul McCartney") print(connection.queries) beatles = Group.objects.create(name="The Beatles") print(connection.queries) m1 = Membership(person=ringo, group=beatles, date_joined=date(1962, 8, 16), invite_reason="Needed a new drummer.") m1.save() print(connection.queries) qst1 = beatles.members.all() # print(connection.queries) print(qst1.query) qst2 = ringo.group_set.all() # print(connection.queries) print(qst2.query) return HttpResponse("ok test1 21")执行结果如下:

[{'sql': 'SELECT @@SQL_AUTO_IS_NULL', 'time': '0.001'}, {'sql': 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', 'time': '0.000'}, {'sql': "INSERT INTO `usermnge_person` (`name`) VALUES ('Ringo Starr')", 'time': '0.005'}, {'sql': "INSERT INTO `usermnge_person` (`name`) VALUES ('Paul McCartney')", 'time': '0.002'}, {'sql': "INSERT INTO `usermnge_group` (`name`) VALUES ('The Beatles')", 'time': '0.007'}, {'sql': "INSERT INTO `usermnge_membership` (`person_id`, `group_id`, `date_joined`, `invite_reason`) VALUES (3, 2, '1962-08-16', 'Needed a new drummer.')", 'time': '0.008'}][12/Sep/2019 16:17:22] "GET /test1/ HTTP/1.1" 200 10

SELECT `usermnge_person`.`id`, `usermnge_person`.`name`FROM `usermnge_person`INNER JOIN `usermnge_membership` ON ( `usermnge_person`.`id` = `usermnge_membership`.`person_id`)WHERE `usermnge_membership`.`group_id` = 15

 

SELECT `usermnge_group`.`id`, `usermnge_group`.`name`FROM `usermnge_group`INNER JOIN `usermnge_membership` ON ( `usermnge_group`.`id` = `usermnge_membership`.`group_id`)WHERE `usermnge_membership`.`person_id` = 29

 

10、命令行创建数据库注意事项?

CREATE TABLE `grade` ( `id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `name` VARCHAR(255) NOT NULL);

CREATE TABLE `student` ( `id` INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, `g_id` INTEGER NOT NULL REFERENCES `grade` (`id`), `name` VARCHAR(255) NOT NULL);

10.1、使用倒引号`, 不能使用单引号' ;10.2、varchar(255),用括号括起来,不能错误写成varchar 255;10.3、REFERENCES `grade` (`id`), 不能错误写成 FOREIGN KEY (`g_id`) REFERENCES `grade` (`id`);

 

 

11、三个表互为关联,是否会形成死循环?

11.1、总结下来是: 用户-用户组-角色, 用户可以通过用户组与角色建立关联; 用户-角色,用户和角色也可以直接建立关联;    

 

 

但是 ,需要注意唯一性:“用户、角色”这个一对要唯一; ‘’用户、用户组“要唯一; ”角色、用户组“要唯一。11.2、三张表不能互为关联,否则相互为外键,删除的时候相互依赖,形成死循环,无法删除;

 

 

12、为什么80%的码农都做不了架构师?

各位大牛,小弟这几天搞用户 权限控制的功能,在网上看了个关于用户权限控制的设计:

基于RBAC权限模型的扩展模型的完整设计图:(不知道哪位看过没有),有些不明白的地方,希望能得到大家的指点:

现在的设计应该是:一个用户拥有若干角色,每一个角色拥有若干权限,这样构成用户拥有某些权限,但是权限和菜单怎么关联呢?比如说我现在有以下功能模块:

1、添加用户信息    2、删除用户信息、 3、删除用户信息,现在有角色1:管理员,我怎样让这个管理员用户这三个功能的权限能,现在的思路是:

1、根据用户从 "用户角色表" 里面查询所拥有的 角色ID ,

2、根据 角色ID从 ”角色权限关联表“查询这个角色拥有的权限ID,

3、然后根据权限ID从权限关联表中查询所拥有的菜单功能模块,

但是权限表和菜单表具体在表里面是怎么体现的,我怎样吧这几个功能菜单给某个权限呢?

 

13 MySql 外键约束 之CASCADE、SET NULL、RESTRICT、NO ACTION分析和作用

CASCADE在父表上update/delete记录时,同步update/delete掉子表的匹配记录

SET NULL在父表上update/delete记录时,将子表上匹配记录的列设为null (要注意子表的外键列不能为not null)

NO ACTION如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作

RESTRICT同no action, 都是立即检查外键约束

SET NULL父表有变更时,子表将外键列设置成一个默认的值 但Innodb不能识别

 

 

 

转载于:https://www.cnblogs.com/harryTree/p/11325535.html

最新回复(0)