关于小白一点学习Django

一, 利用命令行开始项目,建立一个Django项目,并查看
二, 可以利用命令行工具,对Diango项目进行交互
三, 需要注意的相关问题
C:\Users\zhoubo>cd C:\Users\zhoubo\Desktop\weproject

C:\Users\zhoubo\Desktop\weproject>django-admin startproject project

C:\Users\zhoubo\Desktop\weproject>tree
卷 系统 的文件夹 PATH 列表
卷序列号为 000A-D98E
C:.
└─project
└─project

C:\Users\zhoubo\Desktop\weproject>tree . /F
卷 系统 的文件夹 PATH 列表
卷序列号为 00000028 000A:D98E
C:\USERS\ZHOUBO\DESKTOP\WEPROJECT
└─project
三, │ manage.py 一个命令行工具,对Diango项目进行交互

│
└─project
        settings.py   项目的配置文件
        urls.py     项目的url声明
        wsgi.py    项目与wsgi兼容的web服务器入口
        __init__.py   告诉Python这个目录看做一个python包

C:\Users\zhoubo\Desktop\weproject>

1, 简述个个tree下面文件项目的含义
二,基本操作

  基本操作:   1,设计表结构:a班级表:  表名:grade   字段:见表结构

                           B学生表   表名:students  字段:  
              2,配置数据库 注意:Django默认使用SQlite数据库,但是我们用mysql数据库,我们在Setings。Py中配置
               需要配置mysql数据库:我们使用的是PyMySQL包操作数据库:1,在__init_里面写入两行代码
              3,在seting中修改DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': "sunck",
    'User':'roor',
    'PASSWORD':"wo12305858",
    'HOST':"localhost",
    'PORT':'3306',

}

}

在__init_.py中配置
import pymysql
pymysql.install_as_MySQLdb()

4,创建应用:一个项目可以创建多个应用
打开黑频终端,进入project目录,执行tree . /F
终端执行python manage.py startapp
myApp说明:1,admin.py 站点配置
2,model.py 写入模型
3,views.py 视图
5,激活应用:1,在seting中,将myAPP加入,如下图
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘myApp’
]
四, 先去搞模型
1, 定义模型:有一个数据表就对应一个模型
2, 在modeal中定义模型,总得模式图见下

两张表就是两个模型
引入包 from django.db import models,需要继承包里面的modelsMdel类,实现一些类
#d对应数据库里面的一
class Grades(models.Model):
gname=models.CharField(max_length=10)
gdate=models.DateField()
ggirlnum=models.IntegerField()
gboynum=models.IntegerField()
isDelete=models.BooleanField(default=False)

class Students(models.Model):
sname=models.CharField(max_length=20)
sgender=models.BooleanField(default=True)
sage=models.IntegerField()
scontend=models.CharField(max_length=20)
isDelete=models.BooleanField(default=False)
#关联外键
sgrade=models.ForeignKey(“Grades”)
说明:不需要定义主键,并且值为自增长
3, 生成数据表(在数据库中生成):1生成迁移文件,在终端下生成C:\Users\zhoubo\Desktop\weproject\project>python manage.py makemigrations
4, Migrations for ‘myApp’:
5, myApp\migrations\0001_initial.py
6, - Create model Grades
7, - Create model Students
8,
9, C:\Users\zhoubo\Desktop\weproject\project>
2,执行迁移文件,生成表mysql> use sunck;
Database changed
mysql> show tables;
±---------------------------+
| Tables_in_sunck |
±---------------------------+
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session |
| myapp_grades |
| myapp_students |
±---------------------------+
12 rows in set (0.00 sec)

3,测试数据操作:1进入到python shell环境:导报
C:\Users\zhoubo\Desktop\weproject\project>python manage.py shell
Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
Type ‘copyright’, ‘credits’ or ‘license’ for more information
IPython 6.3.1 – An enhanced Interactive Python. Type ‘?’ for help.

In 1: from myApp.models import Grade.Students
File “”, line 1
from myApp.models import Grade.Students
^
SyntaxError: invalid syntax

In 2: from myApp.models import Grade,Students

ImportError Traceback (most recent call last)
in ()
----> 1 from myApp.models import Grade,Students

ImportError: cannot import name ‘Grade’

In 3: from myApp.models import Grades,Students

In 4: from diango.utils import timezone

ModuleNotFoundError Traceback (most recent call last)
in ()
----> 1 from diango.utils import timezone

ModuleNotFoundError: No module named ‘diango’

In [5]: from django.utils import timezone

In [6]: form datetime import *
File “”, line 1
form datetime import *
^
SyntaxError: invalid syntax

In [7]: from datetime import *

1, 查询所有数据 Grades.objects.all()这个方法可以查询到Grade里面所有的方法
2, 添加一条数据,本质就是创建一个模型类的对象实例;
就是创建一个对象,然后分别赋值
] ] In [10]: grade.gdate=datetime(year=2017,month=7,day=17)

In [11]:

In [11]: grade.ggirlnum=3

In [12]: grade.gboynum=10

In [13]: grade.savs()

AttributeError Traceback (most recent call last)
in ()
----> 1 grade.savs()

AttributeError: ‘Grades’ object has no attribute ‘savs’

In [14]: grade.save()
Sava方法就是将数据保存到数据库,数据库查询如下
Empty set (0.00 sec)

mysql> select * from myapp_grades;
±—±-------±-----------±---------±--------±---------+
| id | gname | gdate | ggirlnum | gboynum | isDelete |
±—±-------±-----------±---------±--------±---------+
| 1 | bobo | 2017-07-17 | 3 | 10 | 0 |
±—±-------±-----------±---------±--------±---------+
1 row in set (0.00 sec)

mysql>

3, 查看某个班级

In [16]: Grades.objects.get(pk=2)
Out[16]: <Grades: bobo-19-10>

4, 修改某条数据
In [17]: grade2.gboynum=520

In [18]: grade2.save()
数据库截图如下

5, 删除数据
直接就是grade2.delete()可以直接删除。这里对象可以直接删除
注意:这里是物理删除,不是逻辑删除。
6, 关联对象
同样的方法实例化students对象
In [32]: student1.sgrade=grade2

In [33]: student1.save()
数据库表如下
B,获得关联对象的集合,需求,就是通过班级查询坐在班学生

In [47]: grade2.students_set.all() //自带的属性可以查询光联表里面所有的数据
Out[47]: <QuerySet [<Students: Students object>, <Students: Students object>]>
格式如下:对象名名.关联类小名_set.all()
7.关联创建对象并保存
In [55]: stu4=grade2.students_set.create(sname=“波波”,sgender=True,scontend=“我叫渣”,sage=30)

In [56]: stu4.save() 直接添加到数据库 数据库如下

五, 启动服务器
1, 格式
Python manger.py runserver ip.port
Ip可以不写,代表的是本机ip,
端口号默认是8000。可以进行修改
说明:这是一个python写的一个轻量级的web服务器,仅仅在测试中使用
显示如下:C:\Users\zhoubo\Desktop\weproject\project>python manage.py runserver
Performing system checks…

System check identified no issues (0 silenced).
April 15, 2018 - 01:08:43
Django version 1.11.4, using settings ‘project.settings’
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[15/Apr/2018 01:09:15] “GET / HTTP/1.1” 200 1716
Not Found: /favicon.ico
[15/Apr/2018 01:09:16] “GET /favicon.ico HTTP/1.1” 404 1963

2, Admin站点管理:
1, 内容发布:他是负责添加修改删除内容(数据库里面的数据),就是为了一个可视化界面便于
管理,已经在seting.py中已经配置好了,需要要自己配置
2,创建管理员用户:C:\Users\zhoubo\Desktop\weproject\project>python manage.py createsuperuser
Username (leave blank to use ‘zhoubo’): qin
Email address: 520
Error: Enter a valid email address.
Email address: 520@qq.com
Password:
Password (again):
The password is too similar to the email address.
This password is too short. It must contain at least 8 characters.
This password is entirely numeric.
Password:
Password (again):
This password is entirely numeric.
Password:
Password (again):
Superuser created successfully.

C:\Users\zhoubo\Desktop\weproject\project>
这里就创建好了,现在开始进入
怎么汉化
在seting中修改:
将LANGUAGE_CODE = ‘en-us’

TIME_ZONE = ‘UTC’

USE_I18N = True

USE_L10N = True

USE_TZ = True

LANGUAGE_CODE = ‘zh-Hans’

TIME_ZONE = ‘Asia/Shanghai’

USE_I18N = True

USE_L10N = True

USE_TZ = True
3管理我们的数据表:
修改admin.py文件
from django.contrib import admin

Register your models here.

from .models import Grades,Students

注册

admin.site.register(Grades)
admin.site.register(Students)
4,.由于不要看,开始自定义管理界面,便于观看
列表页属性
list_display = [] 作用是显示字段
list_filter = [] 作用是过滤条件查询数据
search_fields = [] 增加一个搜索框
list_per_page =

 添加,修改页属性

fields = []
fieldsets = []

一个修改如下:class GradeAdmin(admin.ModelAdmin):
#列表页属性
list_display = [‘pk’,‘gname’,‘gdate’,‘ggirlnum’,‘gboynum’,‘isDelete’]#显示字段
list_filter = [‘gname’] # 作用是过滤条件查询数据
search_fields = [‘gname’] # 增加一个搜索框
list_per_page =5 # 分页,每五条数据分一次页

#添加,修改页属性
# fields = ['ggirlnum','gboynum','gname','gdate','isDelete']   #x修改页面的属相
fieldsets = [
    ("num",{"fields":['ggirlnum','gboynum']}),
    ("base",{"fields":['gname','gdate','isDelete']})
]    #给属性分组,与上面的不能同时使用

admin.site.register(Grades,GradeAdmin)

最终代码如下:
from django.contrib import admin

Register your models here.

from .models import Grades,Students

注册

class GradeAdmin(admin.ModelAdmin):
#列表页属性
list_display = [‘pk’,‘gname’,‘gdate’,‘ggirlnum’,‘gboynum’,‘isDelete’]#显示字段
list_filter = [‘gname’] # 作用是过滤条件查询数据
search_fields = [‘gname’] # 增加一个搜索框
list_per_page =5 # 分页,每五条数据分一次页

#添加,修改页属性
# fields = ['ggirlnum','gboynum','gname','gdate','isDelete']   #x修改页面的属相
fieldsets = [
    ("num",{"fields":['ggirlnum','gboynum']}),
    ("base",{"fields":['gname','gdate','isDelete']})
]    #给属性分组,与上面的不能同时使用

admin.site.register(Grades,GradeAdmin)

class StudentsAdmin(admin.ModelAdmin):
list_display = [‘pk’,‘sname’,‘sage’,‘sgender’,
‘scontend’,‘sgrade’,‘isDelete’]
list_per_page = 2

admin.site.register(Students,StudentsAdmin)
界面视图如下:省略
5,每次添加一个班级是会显示添加两个学生:
代码如下:class StudentsInfo(admin.TabularInline):
model=Students
extra = 2

注册

class GradeAdmin(admin.ModelAdmin):
#这里就是为每次增加一个班级是会显示添加两个同学
6
inlines = [StudentsInfo]
6,布尔值显示问题和对描述进行修改,代码如下
class StudentsAdmin(admin.ModelAdmin):

def gender(self):
    if self.sgender:
        return '男'
    else:
        return '女'

gender.short_description = "性别" #对上面的描述进行修改
list_display = ['pk','sname','sage',gender,
                'scontend','sgrade','isDelete']
list_per_page = 10

操作执行位置设置:actions_on_bottom = True
7, 使用装饰器完成注册
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):

def gender(self):
    if self.sgender:
        return '男'
    else:
        return '女'

gender.short_description = "性别" #对上面的描述进行修改
list_display = ['pk','sname','sage',gender,
                'scontend','sgrade','isDelete']
list_per_page = 10
actions_on_bottom = True

#admin.site.register(Students,StudentsAdmin)
将admin.site.register(Students,StudentsAdmin)
换成 @admin.register(Students)
6,视图的基本使用:
在view.py里面:from django.shortcuts import render

Create your views here.

from django.http import HttpResponse
def index(request):
return HttpResponse(“周 波 是 个 好 男 人”)
开始配置url:1,在应用下面配置一个urls.py文件;
现在开始编写两个url文件:
修改两个urls 代码如下:from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^’,include(‘myApp.urls’))
嗨哟偶一个:from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^$’,views.index)
]

8, 重新自定义一个url:代码如下,传递一个数值参数,并打印出来,代码如下:
Urls.py代码如下
from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^KaTeX parse error: Expected 'EOF', got '\d' at position 29: …), url(r'^(\̲d̲+)/’,views.detail)
]
view。Py如下
from django.shortcuts import render

Create your views here.

from django.http import HttpResponse
def index(request):
return HttpResponse(“周 波 是 个 好 男 人”)
def detail(request,num):
return HttpResponse(“detail-%s”%num)

六, 模板的基本使用
概述:模板是HTML页面,可以根据视图中传递的数据进行填充。
创建模板:目录如下

配置路径:修改seting文件下的TEMPLATES:
修改如下:
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’, 这里的BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))就是目录C:\Users\zhoubo\Desktop\weproject\project这个目录

    'DIRS': [os.path.join(BASE_DIR,'templates')],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},

]

定义出grades.html和students.html模板,其中代码如下:

班级信息列表

2, 接下来开始配置url和view,代码如下:
3, from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^KaTeX parse error: Expected 'EOF', got '\d' at position 29: …), url(r'^(\̲d̲+)/’,views.detail),

url(r'^grades/$',views.grades)

]

view里面代码如下:
from .models import Grades
def grades(request):
# 去模板里面取数据
gradesList=Grades.objects.all()
#将数据传递给模板,模板在渲染界面,然后再讲界面返回给游览器
return render(request,‘myApp/grades.html’,{“grades”:gradesList})

1,安装
2,数据库的构建[TOC]

欢迎使用Markdown编辑器

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

新的改变

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 全新的界面设计 ,将会带来全新的写作体验;
  2. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
  3. 增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;
  4. 全新的 KaTeX数学公式 语法;
  5. 增加了支持甘特图的mermaid语法1 功能;
  6. 增加了 多屏幕编辑 Markdown文章功能;
  7. 增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;
  8. 增加了 检查列表 功能。

功能快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G

合理的创建标题,有助于目录的生成

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。2

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t &ThinSpace; . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. mermaid语法说明 ↩︎

  2. 注脚的解释 ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值