Django创建应用和项目基本流程学习(二)

创建项目project

创建learning_log项目

  • 在terminal中进入项目路径(manage.py所在文件夹,后面用project_path$表示),输入如下指令:
project_path$ django-admin startproject libnotes .
  • settings: 指定Django如何与系统交互及如何管理项目
  • urls: 告诉Django应创建哪些网页来响应浏览器请求
  • wsgi: 帮助Django提供它创建的文件,web server gateway interface(web服务器网关接口)

试运行server,并自动创建db.sqlite3数据库文件

  • 在terminal中输入如下指令:
project_path$ python manage.py runserver
  • 复制terminal中“Starting development server at http://...:8000/”到浏览器,查看效果
  • 此时项目路径中会自动生成db.sqlite3,创建一个名为0001_initial.py的迁移文件

数据库的实施应用

  • 在terminal中输入如下指令
project_path$ python manage.py makemigrations # 会提示没有需要更新的数据
project_path$ python manage.py migrate  # 应用上个模块中生成的迁移文件

创建超级管理员

  • 在terminal中输入如下指令:
project_path$ python manage.py createsuperuser

AdminName@Password

创建应用程序app: /notes/

创建app

  • 在terminal中输入如下指令:
project_path$ python manage.py startapp learning_logs
  • models: 定义我们要在应用程序中管理的数据,告诉Django如何处理应用程序中存储的数据。代码层面models就是类,有属性和方法
  • admin
  • view

激活模型,配置

  • 修改settings中installed_apps, 让Django将应用程序app包含到项目project中
INSTALLED_APPS = ['notes',] # settings里增加app
  • 同时修改settings中的TEMPLATES属性中的DIRSAPP_DIES
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True, # True: 先根据DIRS搜索,找不到再到各个应用的templates目录找,False:不再搜索应用的templates目录

项目urls中加入应用地址

from django.urls import include

urlpatterns = [path('notes/', include('notes.urls', namespace='notes')),]
# urlpatterns = [path('notes/', include('notes.urls', "notes"), namespace='notes')),],app_name被放到下面的子路径中

在应用中创建子页面:/note/about/

给子页面增加路径文件

  • 在应用文件夹中增加urls.py
  • 在子页面的路径增加视图view路径(代码如下),此处直接调用TemplateView的包所以不用import自写的view包
from django.urls import path
from django.views.generic import TemplateView

app_name = "notes"
urlpatterns = [
    path('about/', TemplateView.as_view(template_name="notes/about.html"), name='about'),
]

方案一:配置需调用的静态文件(css/fonts/image/js)

  • 修改settings中的TEMPLATES属性中的STATICFILES_DIRS
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "common_static"),
]
  • 方案二:还可以参考# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_ROOT = os.path.join(BASE_DIR, "collected_static")

给about页面增加template

  • project目录中创建templates文件夹
  • templates文件夹中创建about.html
  • 在.templates/notes/about.html中写入template代码

编写基于类的视图

创建基于TemplateView类的AboutView类,可以自己修改类内功能

修改app应用路径中的views.py文件

from django.views.generic import TemplateView

class AboutView(TemplateView):
	template_name = "notes/about.html"
# 可以理解为AboutView是个专用类,此处可以定义抓用类的template名字,而TemplateView是个公用类,所以每次调用都需要定义模板名字

再修改应用urls中的urlpatterns调用函数

urlpatterns = [
	path('about/', AboutView.as_view(), name="about")
	# path('about/', TemplateView.as_view(template_name="notes/about.html"),name='about'),
]

数据库交互

创建数据模型

  • 在app应用路径中的models.py创建Notes类

  • 其中用到slugify

作用:用于将字符串中的所有空格替换成连接符(-),并将所有字符转换为小写。 这样其实就生成了一个 slug ,可以很好的用于创建URL 
空格在URL中不被允许
  • 数据库中会生成notes_notes, 即appName_className
  • 创建好模型之后,执行迁移数据,完成数据库更新
python manage.py makemigrations 
# 创建一个名为0001_initial.py的迁移文件,可以在上面数据库中增加
python manage.py migrate  
# 应用这种迁移
  • 参阅https://docs.djangoproject.com/en/1.8/ref/models/fields

  • Operation to perform:

    • Synchronize unmigrated apps: 同步未迁移文件
    • Apply all migrations: 应用迁移

查看数据库数据结构

  • 进入数据库,进入项目路径,terminal中输入如下信息
sqlite3 db.sqlite3
# 进入数据库环境,显示为sqlite>
  • 查看数据库所有的数据表
sqlite>.tables
  • 查看某个表的结构
sqlite>pragma table_info(notes_notes);
  • 选择一个数据表用SQL语句插入一条数据
sqlite>insert into notes_notes(title, slug, overview, created, user_id) values (" django web", "django-web", "add model test", "2020-06-11", 1);
  • 从表notes_notes数据表中选择所有的数据
sqlite>select * from notes_notes;
  • 退出sqlite环境
sqlite>.quit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值