xi123的个人博客分享 http://blog.sciencenet.cn/u/xi123

博文

django安装与创建项目和应用

已有 1446 次阅读 2018-1-18 09:16 |个人分类:django学习|系统分类:科研笔记

目录:

1、安装Django

     2、创建项目

     3、创建应用

     4、创建一个页面(响应)步骤

     5、URL的第二种配置

     6、开发templates

     7、Models

     8、相关问题


1、安装django

   安装环境为win7+anaconda+python35,安装命令conda install django.

2、创建项目

1)打开命令行(cmd),进入想要安置项目的目录(博客项目为例);

2)命令行输入:

   django-admin startproject myblog ,若没有报错,则创建项目成功,myblog是项目名;

   可以使用django-admin可以查看所有django指令;

3)使用pycharm打开项目工程,项目结构如下图:


   相关文件说明:

           1manage.py 是与项目进行交互的命令行工具集的入口,也就是项目管理器

    执行python manage.py 查看manage.py中所有命令,其中有一个名为runserver的子命令用于启动服务器(django自带的小型服务器),然后可以打开网站访问项目。

    命令行输入:pythonmanage.py runserver

    然后在浏览器中输入http://127.0.0.1:8000/或者http://localhost:8000/访问页面(8000为端口号),结果如下图。如果要改变端口号的话,只需在runserver后面加上所需要的端口号。显示如下结果说明项目创建成功。(windows下cmd中使用ctrl+c中断程序。)


               2myblog目录(与项目名相同)是项目的一个容器,包含了项目最基本的配置,目录名称默认与项目名相同,不建议修改。该目录中的文件:

   (1wsgi.py: 全称为python web server gateway interface中文名python网关接口,是django应用与web服务器的接口,在开发过程中基本上不会用到它,最好不要改动。

   (2urls.pyURL配置文件,Django项目中所有地址(页面)都需要我们自己去配置。

   (3settings.py:是整个项目最核心的配置文件,是项目的总配置文件,包含了数据库、web应用、时间等各种配置。

         BASE_DIR:项目的根目录
          SECRET_KEY:安全码,项目启动必备,创建项目是自动创建该变量

   (4__init__.pypyhon中声明模块的文件,一般为空。


3、创建应用

创建步骤:

(1)      打开命令行,进入项目中的manage.py同级目录

(2)      命令行输入python manage.py startapp blog(注意应用名不允许与python中模块名相同)

(3)      添加应用名到settings.py中的INSTALLED_APPS


   应用目录介绍:

   (1)      migrations模块:数据移植(迁移)模块,其中文件均为django自动生成;

   (2)      admin.py:是当前的后台管理系统配置文件;

   (3)      apps.py:是当前应用的配置文件,django1.9以后才自动生成;

   (4)      models.py:是数据模块,使用ORM模块,类似MVC结构中的models的作用;

   (5)      tests.py:自动测试模块,django提供了自动化测试功能,在这里编写脚本;

   (6)      views.py:执行相应代码所在模块,代码逻辑处理的主要地点,整个项目最主要的代码编写地方;


4、创建一个页面(响应)步骤

(1)      创建响应

   编辑views.py文件,每个响应对应一个函数,函数必须返回一个响应,函数必须存在一个参数,一般约定为request,每个响应(函数)对应一个URL

(2)      配置URL

   编辑urls.py文件,每个URL都以url函数的形式写出来;url函数放在urlpatterns列表中;url函数有三个参数:URL(正则),对应方法、名称

(3)      在命令行输入python manage.py runserver启动服务器


5、URL的第二种配置:采用include的方法

(1)      在根目录下urls.py中引入include

(2)      APP目录下创建urls.py文件,格式与根urls.py相同

(3)      在根目录下urls.py中的url函数的第二个参数改为include(‘app_name.urls’)

   注意:

   (1)      根目录下urls.py针对APP配置的URL名称,是该APP所有URL的总路径

   (2)      配置URL时注意正则表达式结尾符号$/


6、开发templates(即html页面)

  Templateshtml文件,使用django模板语言(DTL),也可以使用第三方模板(如jinja2

  •   Templates创建:

(1)      APP根目录下创建名为templates的目录

(2)      在该目录下创建html文件

(3)      views.py中使用render()函数返回该页面

                render():一般有3个参数

      1)参数一:request(一般为默认参数);

      2)参数二:模板路径;

      3)参数三:从后台传递到前端的数据,支持一个dict类型参数,该字典是后台传递到模板的参数,键为参数名在模板中使用{{参数名}}来直接使用。

  •         templates冲突:

               Django查找template:Django按照INSTALLED_APPS中的添加顺序查找templates, 不同APPtemplates目录中的同名.html文件会造成冲突;

               解决方案:APPtemplates目录下创建以APP名为名称的目录,将html文件放入新创建的目录下;


7、Models:

        通常,一个model对应数据库的一张数据表,djangomodels以类的形式表现,它包含了一些基本字段以及数据的一些行为。

        ORM:对象关系映射(objectrelation mapping)实现了对象与数据库之间的映射,隐藏了数据访问细节,不需要编写SQL语句。

  •    Models创建:

        (1)在应用根目录下创建models.py,并引入models模块(django在创建应用时自动实现)

        (2)创建类,继承models.Model,该类即是一张数据表

        (3)在类中创建字段,字段即类里面的属性。

  • 生成数据表:

        (1)命令行进入manage.py同级目录

        (2)执行pythonmanage.py makemigrations app名(可选)进行数据迁移

        (3)在执行Pythonmanage.py migrate

  •  创建完数据表之后查看:

        (1)Django会自动在app/migrations/目录下生成移植文件

        (2)执行pythonmanage.py splmigrate 应用名文件id 查看SQL语句

        (3)默认的splite3的数据库在项目根目录下db.sqlite3

  •  查看并编辑db.sqlite3

        使用第三方软件SQLiteexpert personal 轻量级免费

        安装教程:https://jingyan.baidu.com/article/ea24bc3997a8a1da63b33159.html

  •  页面呈现数据:

        views.pyimport models

        获取数据对象(即数据表)

            通过render将参数三将数据传递到前端



8、相关问题:

   (1)在Django中如何正确完整地删除一个App

       http://blog.csdn.net/huochen1994/article/details/52680067

(2)  django中添加jscss、图片等外部文件的方法

   https://www.cnblogs.com/zknublx/p/5916354.html

(3)django中如何从views.py中将pythonlistdict传递到前端,并显示字典或列表中的内容?

       https://code.ziqiangxuetang.com/django/django-template2.html

       http://blog.csdn.net/gaoxiaoba/article/details/52469614(字典数据显示)

       http://blog.csdn.net/u012643122/article/details/53308078(列表元素提取)

      (4)django模板解析循环列表中切片和求长度

        https://www.cnblogs.com/xqnq2007/p/7979551.html

        https://stackoverflow.com/questions/13138859/django-length-of-a-list

 

  搜索:djangoview中传递一个字典给模板(template),如何在模板中遍历字典呢或单独提取某个元素?

  搜索:Django的模板,传递 list,如何提取 list 中的某个元素而不是遍历?

   回答:{{xxx.1}}#1代表索引,xxx代表list

参考资料:

[1]http://www.imooc.com/learn/790 (django入门视频教程)

[2]http://djangobook.py3k.cn/(django书籍资料)

[3]https://docs.djangoproject.com/en/1.11/ref/(django API介绍)

[4]https://docs.djangoproject.com/en/1.11/ref/settings/#databases(django中数据库配置)

[5]https://code.ziqiangxuetang.com/django/django-tutorial.html(django基础教程)

[6]  https://www.douban.com/note/145065606/(django模板过滤器)

[7]http://www.w3school.com.cn/ajax/ajax_intro.asp(ajax教程)

[8]http://www.w3school.com.cn/js/js_window_location.asp(js教程 )

[9]http://www.runoob.com/jquery/jquery-tutorial.html(jQuery教程)

[10]https://docs.djangoproject.com/en/1.11/(django官方文档)











https://blog.sciencenet.cn/blog-3360373-1095470.html

上一篇:数据结构之排序二(python实现)
下一篇:linux常用命令
收藏 IP: 124.16.148.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-22 06:07

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部