zoukankan      html  css  js  c++  java
  • django使用

    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 mysql

    3、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.name

    class Author(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()
    def __str__(self):
    return self.name

    class 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 FilesPyCharm 2018.1.4in unnerw.exe" "D:Program Filespython3.6.7python.exe" "D:Program FilesPyCharm 2018.1.4helperspycharmdjango_manage.py" sqlmigrate usermnge 0001 D:/pythonWorkspace/modelTest
    Tracking file by folder pattern: migrations
    BEGIN;
    --
    -- 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对应的源sql
    manage.py@modelTest > sqlmigrate usermnge 0002
    "D:Program FilesPyCharm 2018.1.4in unnerw.exe" "D:Program Filespython3.6.7python.exe" "D:Program FilesPyCharm 2018.1.4helperspycharmdjango_manage.py" sqlmigrate usermnge 0002 D:/pythonWorkspace/modelTest
    Tracking file by folder pattern: migrations
    BEGIN;
    --
    -- 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.name

    class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __str__(self):
    return self.name

    class 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不能识别

  • 相关阅读:
    项目中的*签到*小功能!
    亲们,拿到DateTime.Now你是否也是这样比较的?
    <input type="file" />,美化自定义上传按钮
    让你的页面实现自定义的 Ajax Loading加载的体验!
    按回车键提交表单!
    字符串比较大小,CompareTo来搞定!
    巧用Contains可以做到过滤同类项!
    项目开发中遇到的Bug知识整理!
    SharePoint中详细的版本对比
    ASP.NET安全隐患及SharePoint中的Workaround
  • 原文地址:https://www.cnblogs.com/harryTree/p/11325535.html
Copyright © 2011-2022 走看看