DJango-1、初识DJango

目录

使用DJango框架基本流程介绍

初始文件的作用

创建一个项目的步骤(一个项目中可以有多个app)

创建、注册一个app的步骤(每个app可以被多个项目使用)

创建路由、视图和模板

DJango配置项介绍

配置数据库

模板

静态文件

前端模板继承

上下文处理器


使用DJango框架基本流程介绍

初始文件的作用

新建一个DJango项目,会有以下一些文件,下面是对各个文件的解释

创建一个项目的步骤(一个项目中可以有多个app)

1、安装django:pip install django

2、进入你期望的项目保存目录,执行命令,新建项目:django-admin startproject 项目名称

3、回到mysite项目的根目录启动开发服务器:python manage.py runserver,若是修改端口:python manage.py runserver 8080

4、打开浏览器,访问http://127.0.0.1:8000/,你将看到Django的火箭欢迎界面,一切OK(此时页面是英文的,若需要中文,需要在setting中修改配置,在重新刷新浏览器即可)

5、setting.py配置如下:

LANGUAGE_CODE = 'zh-hans' # 设置语言为中文

TIME_ZONE = 'Asia/Shanghai' # 设置时区为上海时区

USE_TZ = False # 将True改为False,若是不改的话,存入到数据库的时区还是utc时区

创建、注册一个app的步骤(每个app可以被多个项目使用)

1、python manage.py startapp appname(appname为自定义的app名字)

2、在当前app下的models.py文件中,创建模型(模型中定义了数据如何在数据库内保存)

3、在settings.py--Database中配置数据库(若是使用默认的sqllite,则不需要额外设置)

4、在setting.py--INSTALLED_APPS中,注册app (添加app的名字)

5、对模型进行任何的修改后,务必执行python manage.py makemigrations让修改动作保存到记录文件中(生成表结构)

6、然后执行命令python manage.py migrate,让操作实际应用到数据库上

7、在app下的admin.py文件中注册

创建路由、视图和模板

1、编写视图:对在路由中配置的每个页面编写视图,主要写逻辑,在项目下的views.py的中编写,并引用编写的html模板

2、编写模板:指的是编写每个页面的html文件,在项目下的templates/appname下创建html文件

3、配置路由:对每个页面配置url,在项目下的urls.py的urlpatterns中配置,并导入对应app中的views模块

4、配置setting.py中的模板

'DIRS': [os.path.join(BASE_DIR,'templates/blog')],  # 配置好之后django会自动找html文件

5、测试路由和视图:启动服务器,在浏览器访问http://127.0.0.1:8000/index/等页面,可以正确访问 完善html页面和css文件:可在html文件中引用静态文件 

DJango配置项介绍

配置数据库

DJango默认是使用sqlite3数据库,若是使用默认的sqlite3数据库,则使用默认配置即可,DATABASES中的配置不需要任何修改。

步骤:

1、服务器上安装mysql数据库服务

2、pip安装pymysql模块

3、若是修改数据库,需要配置setting.py,以mysql数据库为例(需要将之前的default字典注释掉),在DATABASES中进行如下设置

    'default': {
        'ENGINE': 'django.db.backends.mysql', # 数据库引擎改为mysql
        'NAME': 'db_name', # 数据库名称
        'USER': 'db_user', # 用户
        'PASSWORD': 'db_password', # 密码
        'HOST': '127.0.0.1', # ip
        'PORT': '3306', # 端口号
    }

报错1:

运行是发现会提示:加载MySQLdb模块时出错

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

解决方法:

在setting.py同级的__init__.py中输入以下代码--使用pymysql代替MySQLdb,因为MySQLdb安装的时候容易出现各种各样的错误

import pymysql
pymysql.install_as_MySQLdb()

报错2:

此时会提示:需要MySQL 5.7或更高版本

    raise NotSupportedError(
django.db.utils.NotSupportedError: MySQL 5.7 or later is required (found 5.6.25).

 解决方法:

安装更高版本的mysql即可

模板

用途:用于存放html文件,供views.py使用

步骤:

1、在app的同级目录,创建一个templates目录,在templates下方创建一个与app同名的目录,在其下方可以创建该app下的所有html文件

说明:多创建一级与app同名目录,目的是文件可以分app管理,当存在多个app时,可以避免因为同名文件原因导致不必要的问题(如:app1和app2都有index.html文件,若都是放在templates的根目录下,就会出现程序找不到文件的问题)

2、配置setting.py,在TEMPLATES--DIRS中配置如下代码(路径为自己的html文件所在目录)

'DIRS': [os.path.join(BASE_DIR,'templates/blog')],  # 配置好之后django会自动找html文件 

静态文件

用途:可存储css文件、js文件、image文件等

步骤:

1、在app的同级目录,创建一个static目录,在static下方创建一个与app同名的目录,在其下方分别创建css、js、image目录,用于存放该app下不同类型的文件。

2、配置setting.py,在STATIC_URL下新增如下代码

STATIC_URL = '/static/'
STATICFILES_DIRS = (
  os.path.join(BASE_DIR, 'static'),
) # 静态文件目录

前端模板继承

用途:将同一个app下html文件中的重复代码写到一个html文件中,供其他html继承使用,目的是结构清晰,易读易修改,减少冗余代码

步骤:

1、创建模板。在templates--app目录下,新建一个base.html,将html文件公共的部分放在这里边,如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>{{ title }}</title>
<meta name="keywords" content="个人博客,杨青个人博客,个人博客模板,杨青" />
<meta name="description" content="杨青个人博客,是一个站在web前端设计之路的女程序员个人网站,提供个人博客模板免费资源下载的个人原创网站。" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="/static/blog/css/base.css" rel="stylesheet">
<link href="/static/blog/css/index.css" rel="stylesheet">
<link href="/static/blog/css/info.css" rel="stylesheet">
<link href="/static/blog/css/m.css" rel="stylesheet">
<script src="/static/blog/js/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="/static/blog/js/hc-sticky.js"></script>
<script type="text/javascript" src="/static/blog/js/comm.js"></script>

<!-- 下边的block和endblock为占位符,继承该模板的其他html文件可以自行补充自己所需的css、js、content -->
  {% block css %}
  {% endblock %}

  {% block js %}

  {% endblock %}

<!--[if lt IE 9]>
<script src="/static/blog/js/modernizr.js"></script>
<![endif]-->
</head>

<body>
<header class="header-navigation" id="header">
  <nav><div class="logo"><a href="/">{{ title }}</a></div>
    <h2 id="mnavh"><span class="navicon"></span></h2>
    <ul id="starlist">
      {% for nav in navs %}
      <li><a href="index.html">{{ nav }}</a></li>
      {% endfor %}
    </ul>
  </nav>
</header>

{% block content %}

{% endblock %}

<footer>
  <p>Design by <a href="http://www.yangqq.com" target="_blank">杨青个人博客</a> <a href="/">蜀ICP备11002373号-1</a></p>
</footer>
<a href="#" class="cd-top">Top</a>
</body>
</html>

2、继承模板。 在代码中合适的位置,写对应的css、js、content代码,需要修改新增哪个就写哪个,不需要的可以不写。

如下:

<!-- html文件的顶部,写如下代码(这个是必须要写的) -->
{% extends 'base.html' %}


<!-- 在block css和endblock中间,写css代码 -->
{% block css%}

{% endblock %}

<!-- 在block js和endblock中间,写js代码 -->

{% block js %}

{% endblock %}

<!-- 在block content和endblock中间,写内容代码 -->
{% block content%}

{% endblock %}

上下文处理器

用途:将views.py中多个函数都会使用的重复代码,写在这个文件中,可以减少代码冗余。

步骤:

1、需要先在项目的目录下(和setting.py、urls.py同级)新建一个context_process.py(该文件名可以自己随便起),在里边写函数,如下

def nav_title_process(request):
    '''
    上下文管理器,这个函数里边返回的每个变量,在每个页面都可以用
    '''
    navs = ['我的相册','我的日记','python','linux','接口测试']
    title = '溪洋的个人博客'
    content = {'navs':navs,'title':title}
    return content

2、配置setting.py,将TEMPLATES--OPTIONS--context_processors中增加如下配置项

'dj_blog.context_process.nav_title_process', # 项目目录.文件名.方法名

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值