第一个真正意义的Django项目 !
预计时间5天  20190309--20190314
目标:学会Django的使用,理解模块关系!
 
querset  相当于一个存放列表的字典
 
 
day1 20190309 
1.1 引入环境 ,配置static静态文件,并引入 bootstrap下的dist文件和 jquery
STATIC_URL = '/static/'
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
 
这样下次引入时,会一直使用路径别名  /static/ ,需注意的是项目启动时是以manage.py文件为原始目录来查找路径,而自己测试html时是以该文件的路径为原始路径。
 
创建了超级用户 yeteng/yeteng123
 
1.2 创建和删除用户
#生成新用户,修改状态表
newuser=User.objects.create_user(username=username,password=password,email=email)
# # 删除用户的操作
# deluser = User.objects.get(id=2)
# deluser.delete()
 

1、pull-left和pull-right

2、text-left、text-center和text-right
 
1.4  三个简单实用的用于 DOM 操作的 jQuery 方法:
  • text() - 设置或返回所选元素的文本内容  --其他标签
  • html() - 设置或返回所选元素的内容(包括 HTML 标记) --其他标签
  • val() - 设置或返回表单字段的值   -- 对应input  textarea输入标签
 
day2 20190313
 
2.1 modles.py 中定义表class时的blank与null 区别
 
blank:
当blank=True时,说明此处的数据可以不填,默认情况下为False,也就意味着默认情况下,所输入的数据不得空,blank是和页面表单 有关,在页面需要输入参数的时候,如果在models里面定义了blank=True时,那么这个参数是可以不填写的,如果是默认的话,如果没有填写,则会提示错误。
 
null:
当null=True时,也就是说如果没有填写数据,此处用NULL来储存空值,默认的是null=False。
 
总结:blank主要是用在CharField, TextField,这两个字符型字段可以用空字符穿来储存空值。
          null主要是用在IntegerField,DateField, DateTimeField,这几个字段不接受空字符串,所以在使用时,必须将blank和null同时赋值为True。
          顺便一提,在设置BooleanField为空时,可以使用NullBooleanField型字段。     
 
2.2 在通过AbstractUser类创建用户类时,可添加自定义字段,同时必须注意的是继承该类必须在setting.py中声明使用,一旦指定了新的认证系统使用的表,必须重新在数据库中创建该表,不能使用原来的auth_user表
# 引用Django自带的User表,继承使用时需要设置
AUTH_USER_MODEL = "APP名.UserInfo"
django.db.migrations.exceptions.InconsistentMigrationHistory
 
查看了网上其他博客后:大多建议删除 django_migrations表并删除migration目录下的0001_initial.py(并不能解决问题):
因为当你重新迁移是,并不能成功的映射新的数据库表:
 
 
 
这里只有删除main下除sqlite_master和sqlite_sequence表下的其他表然后重新执行
python manage.py makemigrations
python manage.py migrate
才能迁移成功:
 
Django中删除和重建数据库中关于models类的映射数据库表的正确方法:
 
在Django中删除models类的映射数据库表需要在models.py中剪切或删除对应的models类:然后在控制台中执行:
 
python manage.py makemigrations(Django会重新对照你的models类与数据库中的映射表,如果你的model类被删除,则Django会生成一个删除迁移)
python manage.py migrate(执行删除迁移,删除数据库中对应的model映射表)
 
原文:https://blog.csdn.net/follow_sunshine/article/details/81485222
 
 
day3 20190314
 
在 admin界面可以看到注册的表,需配置 admin.py文件
 
from django.contrib import admin
from blog import models

# Register your models here.
# 注册后可在 前端admin直接查看
admin.site.register(models.Blog)
admin.site.register(models.Category)
admin.site.register(models.Article)
admin.site.register(models.ArticleDetail)
admin.site.register(models.Tag)
admin.site.register(models.Article2Tag)

 
<!-- 注意html这里取一个列表的第几个值,直接 .数字就可以,如 list.1 ;list[1]会报错 -->
django.template.exceptions.TemplateSyntaxError: Could not parse the remainder: '[0]' from 'cate[0]'
 
 
annotate 会将查询结果全部字段作为group by 内容 ,括号里的函数作为select对象.
例如:     models.values("AAA").annotate.(C=count(artid)).values("BBB")
对应SQL:  select "AAA|BBB的查询字段",count(artid) as C from tab1,tab2 ..
               where xxxxxxxxxx
               group by "AAA|BBB的查询字段"
有一个坑,如果 "AAA|BBB的查询字段" 包括了 artid,那么分组结果往往不是你想要的,注意剔除掉
 
 
day4 20190315
 
关键字:extends   block
 
 
day5 20190316
 
关于Django中修改js css文件但浏览器无法及时与之改变的问题
 
浏览器——> 设置——> 高级——>清除浏览数据 ——> 清除缓存和图片,即可
 
 
事物:transaction    不用前端序列化的json:JsonResponse
def diggit(request):
    from django.db import transaction
    from django.db.models import F
    from blog import models

print("diggit---------------11111")
    if request.is_ajax():
        article_id=request.POST.get("article_id")

print(request.user.username,article_id,"-----")
        user=request.user
        article=models.Article.objects.filter(articleid=article_id)
        art_state={"state":False}
        # 在点赞表中加一个 用户和文章的记录,同时文章表的点赞数+1,这两个是事物
        try:
            with transaction.atomic():
                # 方法一
                models.ArticleUpDown.objects.create(user_id=user.userid,article_id=article_id)
                # 方法二
                # models.ArticleUpDown.objects.create(user=user,article=article[0])
                article.update(up_count=F("up_count")+1)
                art_state={"state":True}
        except:
            pass

# django 下的json,在前端不需要反序列化
    from django.http import JsonResponse

    return JsonResponse(art_state)
 
 
点击跳转到其他盒子的方法:
方法一HTML5中a标签的锚点使用  通过id跳转  
<a href="#d3">我在找OA系统</a><br/>
 
方法二,js下id获取焦点方法   $("#d3").focus() 
 
 
 
 
day6 20190317
事件委派  jquery下的on方法(原生js语法不一样):
on(事件类型,标签<.class,#id,标签>,委派的方法):
好处:1.如果子标签较多,不用一个个for循环加事件,消耗内存,增加程序处理的个数
         2.新添加的子标签将会直接获得事件,如博客添加的新评论,直接将事件放在父级,新加的评论ajax到页面马上拥有相关事件。
 
1  $(function(){
2             $("#lists").on("click","li",function(event){
3                 var target = $(event.target);
4                 target.css("background-color","red");
5             })
6         })
 
 
Django模板中的数字自增
forloop.counter
 
 
--------------------end! --------------------------------------------cnblog项目--20190309

cnblog项目--20190309的更多相关文章

  1. Django——model进阶(待完成)

    https://www.cnblogs.com/yuanchenqi/articles/7570003.html 一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目  ...

  2. CNBlog客户端--项目介绍以及技术选型

    项目背景 由于现在开始在博客园写博客,再加上我是android程序员!所以呢,就自然而然的想到自己开发一个自己认为"美"的客户端!!其实还有个原因就是最近我比较闲!!纯属自己给自己 ...

  3. 没想到cnblog也有月经贴,其实C#值不值钱不重要。

    呵呵,就不倚老卖老了,从basic走过来,一路经历vb,vf,delphi,C#,php,asp,html,js,css,太多太多的开发语言,包括面向对象编程思想,语义化页面结构等等,除了高级的编程技 ...

  4. CSDN 论坛招聘区是不是有潜规则?在Cnblog招个人试试...

    CSDN 论坛招聘区是不是有潜规则? 在招聘区发了两个招聘贴都被删掉了... 而且没有任何提示和原因,或者站内短信提示.... 虽然csdn现在很水...不过在那边之前待了几年还是有点感情的 想顺便内 ...

  5. WCF 项目应用连载[2] - 创建Lig日志系统

    WCF 项目应用连载[1] - 索引 - 轻量级的Log系统 - Lig Sample -序 现在我们创建一个Lig工程 - Litelog 2.1 创建Lig服务 _________________ ...

  6. [转] 学习React Native必看的几个开源项目

    http://www.lcode.org/study-react-native-opensource-one/ http://gold.xitu.io/entry/575f498c128fe10057 ...

  7. .NET Core实战项目之CMS 第十四章 开发篇-防止跨站请求伪造(XSRF/CSRF)攻击处理

    通过 ASP.NET Core,开发者可轻松配置和管理其应用的安全性. ASP.NET Core 中包含管理身份验证.授权.数据保护.SSL 强制.应用机密.请求防伪保护及 CORS 管理等等安全方面 ...

  8. 基于 CODING 的 Spring Boot 持续集成项目

    本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少 ...

  9. BBS+Blog项目开发

    BBS+Blog项目开发 目前本项目已经上线,可以直接在GEEK浏览本项目效果:GEEK 1.项目需求 基于ajax和用户认证组件实现登录验证 基于ajax和form组件实现注册功能 系统首页文章列表 ...

随机推荐

  1. python之使用 wkhtmltopdf 和 pdfkit 批量加载html生成pdf,适用于博客备份和官网文档打包

    0. 1.参考 Python 爬虫:把廖雪峰教程转换成 PDF 电子书 https://github.com/lzjun567/crawler_html2pdf wkhtmltopdf 就是一个非常好 ...

  2. Spark缓存策略

    当对同一个rdd多次执行action时,如果在磁盘上则每次执行action都会从磁盘将数据加载,如果将其缓存到内存中会提高再次action的读取速度,Spark缓存主要有cache()和persist ...

  3. java在cmd下编译引用第三方jar包

    java在cmd下编译引用第三方jar包 转 https://blog.csdn.net/qq_21439971/article/details/53924594 获取第三方jar包 第三包我们可以引 ...

  4. VB进行RGB分色

    Option Explicit Private Type RGBA R As Byte G As Byte B As Byte A As Byte End Type Private Declare S ...

  5. JS功能函数

    1.整数每三位增加一个, function toThousands(num) {      return (num || 0).toString().replace(/(\d)(?=(?:\d{3}) ...

  6. Git服务器安装详解及安装遇到问题解决方案

    git是一个不错的版本管理的工具.现在自己在搞一个简单的应用程序开发,想使用git来进行管理.在Google了配置文档后,还是受了N多的挫折.某些文档质量不高,浪费了好多时间...... 好,切入正题 ...

  7. windows系统 phpstudy2018 配置阿里云https最简单的流程!

    一.从阿里去下载ssl文件放到C:\phpStudy\PHPTutorial\Apache\conf\cert 二.首先phpstudy开户php_openssl扩展,具体如下图 一般网上的教程,都要 ...

  8. 【Java】递归递推的应用

    利用阶乘公式来计算组合式: 程序设计思想: 根据公式来计算组合数的大小,从键盘输入n,k的值,设计一个计算阶乘的大小,如果输入的数a为1或0,则直接return 1,否则运用递归,计算a-1的阶乘,直 ...

  9. tomcat之过滤器

    过滤器是一种特殊的servlet,也需要在配置文件中进行配置,通过它可以将指定的请求拦截下来,之后对请求处理,处理完之后,将拦截请求放行.实现过滤器也需要实现一个接口叫javax. servlet.F ...

  10. hive高级数据类型

    hive的高级数据类型主要包括:数组类型.map类型.结构体类型.集合类型,以下将分别详细介绍. 1)数组类型 array_type:array<data_type> -- 建表语句 cr ...