慕课MOOC 《Django入门与实践》学习笔记


课程地址: https://www.imooc.com/learn/790

创建项目

新建项目

: django-admin startproject <项目文件名>

项目目录结构

在这里插入图片描述
这是项目的一个目录
包含项目最基本的一些配置
目录名称不建议修改

manage.py
与项目进行交互的命令行工具集的入口
项目管理器
执行 python manage.py来查看所有命令
runserver
django有一个小型的服务器
启动服务器: python manage.py runserver
然后在浏览器中输入 http://127.0.0.1:8000/ 或者 http://localhost:8000/
运行成功 在这里插入图片描述
改变端口号: python manage.py runserver <端口号>
wsgi.py
WSGI(Python Web Gateway Interface)
Python应用与Web服务器之间的接口
urls.py
URL配置文件
Django项目中所有页面都需要我们去配置其URL
settings.py
最核心的配置文件
变量含义
BASE_DIR根目录
SECRET_KEY安全码(项目创建上会自动生成)
DEBUG打开:错误会直接抛给前端 ps:You are seeing this page because DEBUG=True is in your settings file and you have not configured any URLs.
ALLOWED_HOSTS允许访问的客户名(如果设定为ALLOWED_HOSTS = [‘localhost’],那么两种方法http://127.0.0.1:8000/http://localhost:8000/,前者的地址会被屏蔽,抛出“400”的错误 )
INSTALLED_APPS默认生成自带的应用,如果创建了我们的应用,就必须写到这个列表里面
MIDDLEWARE自带工具集
ROOT_URLCONFurl根文件,默认指向urls.py
TEMPLATESdjango中模版就是一个个的文件
WSGI_APPLICATION和wsgi相关的一律不做改动
DATABASES数据库配置,默认sqlite3,若使用其他的数据库可以在https://docs.djangoproject.com/en/2.1/ref/settings/#databases 中找到相关配置方法
AUTH_PASSWORD_VALIDATORS密码认证有关
LANGUAGE_CODE语言
STATIC_URL静态文件的地址,如css,html,JavaScript,图片等
init.py
声明模块的文件

创建应用

步骤

  1. 在项目中进入和manage.py同级目录中
  2. 命令行输入:python manage.py startapp <应用名> --> 多一个文件夹,文件名为应用名(应用名不能和python中的模块名相同
  3. 添加应用名到settings.py中的INSTALLED_APPS里面(直接加应用名即可
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog'
]

目录结构

migrations
数据移植模块
admin.py
该应用的后台系统管理配置
app.py
该应用的一些配置
models.py
数据模块
使用ORM框架
test.py
自动化测试模块
views.py
执行响应的代码所在模块
项目中 大部分代码所在的位置

创建一个Hello, World!

编辑 views.py 文件
每个响应对应一个函数,函数必须返回一个响应
函数必须存在一个参数,一般规定俗称: request
每一个响应函数对应一个URL
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def index(request):
    return HttpResponse('Hello, World!')
配置URL
import相应的模块: import blog.views as bv
每个URL都以url的形式写出来
url函数放在urlpatterns列表中 path(‘index/’, bv.index)
url函数三个参数:URL,对应方法,名称
运行
启动服务器: python manage.py runserver<\kbd>
浏览器输入: http://localhost:8000/index/ (注意后面要加/index)

第一个Template

配置URL

包含其他的URL
在根 urls.py 中引入include,同时url函数的第二个参数是 include(‘blog.url’)(blog是应用名)
在APP应用下创建一个 urls.py 文件,格式与根 urls.py 相同
urls.py针对app配置的URL名称,是该app所有URL的总路径
注意:
  1. 如果应用文件下的url函数第一个参数是’^$’(正则项,即为空字符串),才能限制URL为 http://localhost:8000/blog/;不能用‘’代替,因为此种情况下url可以为http://localhost:8000/blog/<任何字符串>
  1. 使用的时候需要小心,因为如果这个参数是^index$那么输入网址http://localhost:8000/blog/index会出现404错误
  1. 正确的方法应该是把参数改为 ^index/$ ,输入同样的网址就不会出错
from django.conf.urls import url, include
from django.contrib import admin


urlpatterns = [
    url('admin/', admin.site.urls),
    url('blog/', include('blog.urls')),
]

根urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url('^/$', views.index),
]

应用文件下的urls.py

Templates介绍

Templates概念
HTML文件
使用了django模版语言(DTL)
可以使用第三方模版(如Jinja2)
步骤
在app根文件下创建一个名为 Templates的目录(Directory)
在此目录中创建一个 HTML 文件
views.py 中返回一个 render()
DTL使用方法
render()第三个参数:传递数据到前端,是一个 dict类型的参数
该字典是后台传递到模版的参数,键为参数名
在模版中使用 {{参数名}}来直接使用

models.py

from django.db import models

# Create your models here.
class Article(models.Model):
    title = models.CharField(max_length=64, default='Title')
    content = models.TextField(null=True)
解决templates冲突的方法
在app目录下的 Templates目录创建一个以app名为名的目录
index.html放入此目录中

Models

models

Django中的models
一个 model对应数据库的一张
django中的models以 的形式展现
包含了一些 基本字段和数据的一些 行为
ORM
对象关系映射
实现了 对象和数据库之间的映射
隐藏了数据访问的细节,不需要编写SQL语句
步骤
在根目录中创建一个 models.py ,并引入models模块
创建类,继承 models.Model, 该类是一张数据表
在类中创建字段,字段即类中的 属性(变量)
生成数据表
命令行中进入 manage.py 同级目录
执行 python manage.py makemigrations <app名称> 不写app名称表示所有app都生成
查看
django会在应用的migrates文件夹中自动生成移植文件
查看SQL执行: python manage.py sqlmigrate <应用名> <文件ID> (文件ID是指:应用文件夹的migrations文件夹内自动生成的 xxxx_initial.py ,xxxx即为文件ID)
用于查看修改 db.sqlite3的轻量级软件:
1)SQLite Expert Personal (Win)
2)DB Browser for SQLite(Mac)
页面呈现数据-后台步骤
views.py中 from . import models
加入代码: article = models.Articles.objects.get(pk=1) (pk的值相当于id,用title,content也可以的)
通过render 把对象传递到前端: render(request, page, {‘article’:article})
views.py
from django.shortcuts import render
from . import models

# Create your views here.
def index(request):
    article = models.Article.objects.get(pk = 1)
    return render(request, 'blog/index.html', {'article':article})
页面呈现数据-前端步骤
模版可以直接使用对象以及对象的 .操作: {{article.content}}或者 {{article.title}}

index.html

<body>
<h1>{{article.content}}</h1>
<h1>{{article.title}}</h1>
</body>
小节总结
在应用文件夹中
1) models.py 定义我们的各种模型
2) urls.py 定义我们应用中的各种URL(这些网页要存在于在Templates/blog/文件夹之内)
3) views.py 定义我们的响应函数,最后用render函数来传给前端数据
4) admin.py 中要注册我们定义好的各种模型
我们最后的网址: localhost:8000/ 根目录 urls.py 定义的url/ 应用文件夹urls.py 定义的url/

Admin

Admin介绍
admin是django自带的 自动化数据管理界面
被授权的用户可以直接在admin中管理数据库
django提供了许多针对admin的 定制功能
配置Admin
创建用户: python manage.py createsuperuser
启动服务器,浏览器输入网址: localhost:8000/admin,登陆用户
如果要设置界面的语言为汉语,需要在 settings.py 文件中中设置: LANGUAGE_CODE = ‘zh_Hans’
配置应用
对应用文件夹下的 admin.py 文件进行配置
配置语句: admin.site.register(Article)
from django.contrib import admin
from .models import Article

admin.site.register(Article)
修改数据默认显示的名称
在Article类( 已在models.py 中定义 )中添加一个方法
方法中返回自定义的名称,如:想要返回文章的题目则直接编写 return self.title
此方法的命名如下
# python3以上的版本命名
def __str__(self):
#python2.7版本命名
def __unicode__(self):

搭建博客

写好的东西因为突然电脑没电gg了 有机会再补吧

templates过滤器

使用过滤器
{{value | filter}}
例子: {{list_nums | length}}(显示的内容不是list,而是list的长度)
过滤器可叠加: {{value | filter1 | filter2 | ...}}

django shell

概念

  • 是一个python的交互式命令行程序
  • 自动引入我们项目的环境,和项目进行交互

使用

  • python manage.py shell
  • from blog.models import Article
  • Article.objects.all()

作用

  • 可以进行调试工作
  • 测试未知的方法

admin

创建一个admin的配置类

class ArticleAdmin(admin.modelAdmin):
	pass
admin.site.register(Article, ArticleAdmin)

显示其他字段

  • list_display = ('title', 'content', 'pub_time')(list和tuple都可以)

  • 这里的字段名必须是字符串

  • 不能修改时间:pub_time = models.DateTimeField(auto_now=True)

  • 修改时间:pub_time = models.DateTimeField(null=True)

  • 记得要移植

过滤器

  • list_filter = (‘pub_time’, ) (tuple中只有一个元素要加逗号)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值