2019-10-26一、window下新建安装(参考书籍:《python编程:从入门到实践》)

安装 virtualenv:pip install virtualenv

安装 virtualenvwrapper : pip install virtualenvwrapper-win

创建虚拟环境:mkvirtualenv [虚拟环境名称]

切换到某个虚拟环境下:workon [虚拟环境名称]

退出:deactivate

删除:rmvirtualenv [虚拟环境名称]

列出所有:isvirtualenv

进入虚拟环境所在目录:cdvirtualenv

创建时指定python版本:mkvirtualenv --python==C:\Python36\python.exe(python所在路径) [虚拟环境名称]

  新建一个文件夹 learning_log ,在终端中切换到该目录下,并创建一个虚拟工作环境,运行模块 venv 创建名为 ll_env 的虚拟环境(虚拟环境:系统的一个位置,可在其中安装包,与其他python包隔离。)python 3下的命令。

激活虚拟环境,运行脚本 activate ,处于活动状态下可安装包并使用已安装的包。(Linux下激活: source ll_env/bin/activate )

安装Django,我的版本为2.1.5 (与书中的1.11版不同,很多命令有所改动,借鉴了很多人的思路,希望对后续有该问题的人有所帮助。)

二、创建项目

    创建项目 learning_log ,末尾句点让新项目使用合适的目录结构,与该项目一起创建的还有一个 manage.py 文件。

  

  • learning_log项目下的文件:

    • settings.py:指定Django与系统的交互与如何管理项目;
    • urls.py:创建网页来响应浏览器请求;
    • wsgi.py:帮助Django提供它创建的文件Web server gateway interface (Web服务器网关接口)

创建数据库 db.sqlite3 ,来存储与项目相关的信息;执行 runserver 核实是否创建成功:版本号与当前使用设置文件的名称;项目的URL:http://127.0.0.1:8000/ (可网页登录验证,出错时可换端口尝试)

三、创建应用程序

  不关闭上面运行的终端,另开一个终端并进入激活的虚拟环境下,执行命令 startapp ( startapp appname 让Django建立创建应用程序所需的基础设施)

  • learning_logs目录下的文件:

    • models.py:定义要在应用程序中管理的数据,网页显示的内容由这里的代码定义;
    • admin.py:
    • views.py:
  1. 定义模型:在文件 models.py 下定义,相当于代码的类,包含属性和方法

     from django.db import models
    
     # Create your models here.
    class Topic(models.Model): #继承了Model
    '''用户学习的主题'''
    #text主题名为一个charfield(由字符或文本组成的数据,存储少量文本,定义该属性须告知在数据库中预留多少空间)
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True) #记录时间和日期的数据,实参为自动设置为当前时间 def __str__(self):
    '''返回模型的字符串表示'''
    return self.text
  2. 激活模型:打开 learning_log 目录下的 settings.py   文件,找到包含项目应用程序的 INSTALLED_APPS =(...) 元组,添加应用程序:
     --snip--
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #我的应用程序
    'learning_logs',
    ]
    --snip--

    修改数据库使其能存储与新模型相关联的数据,输出一个迁移文件 0001__initial.py ,在数据库中为模型 Topic 创建一个表;再应用迁移

    迁移数据的流程:

    1. 修改 models.py 文件;
    2. 执行命令 python manage.py makemigrations app_name ( app_name 应用程序的名称,即 settings.py  文件中添加的: learning_logs );
    3. 再执行命令 python manage.py migrate 。
  3. 管理网站:创建超级用户;然后在 learning_logs 目录的 admin.py 文件下注册模型:
     from django.contrib import admin
    
     # Register your models here.
    from learning_logs.models import Topic
    #让Django通过管理网站管理我们的模型
    admin.site.register(Topic)

    再次登录网站:http://localhost:8000/admin/ 时需通过账号密码,然后进入下图:

  4. 添加另一个模型,使添加的每个条目与特定主题相关联,实现多对一的关系。步骤与上一个模型一样,然后刷新网站,可在 Entry 中对一个主题添加多个条目
     from django.db import models
    calss Topic(models.Model):
    --snip-- class Entry(models.Model):
    '''学到的有关某个主题的具体知识'''
    #创建主题时分配一个键或ID,关联到class Topic(在vm库中会自动创建名为 topic_id的字段,关联Topic表中的id字段)
    topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
    text = models.TextField() #文本实例
    date_added = models.DateTimeField(auto_now_add=True)
    #Meta存储用于管理模型额外信息,使用‘entries’表示多个条目
    class Meta:
    verbose_name_plural = 'entries' def __str__(self):
    '''返回模型的字符串表示'''
    return self.text[:50] + '...'

     from django.contrib import admin
    
     # Register your models here.
    from learning_logs.models import Topic,Entry
    #让Django通过管理网站管理我们的模型
    admin.site.register(Topic)
    admin.site.register(Entry)

    在终端执行命令python manage.py shell查看存储在项目数据库中的数据,返回列表:查询集(queryset),修改模型需重启shell 

四、映射URL

  • 在文件 learning_log 目录的 urls.py 文件下修改项目的基础URL,使其映射到我们的项目主页

     from django.contrib import admin
    from django.urls import path,include
    #使用命名空间,在网页渲染时可找到与该名字对应的URL
    urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('learning_logs.urls')), #添加应用程序的URl
    #url(r'',include('learning_logs',namespaces='leaning_logs')),
  • 在应用程序 learning_logs 创建另一个 urls.py 文件
     '''定义learning_logs的URL模式'''
    #旧版代码from django.conf.urls import url
    from django.urls import path,re_path
    from . import views
    app_name = 'learning_logs' #命名空间,写应用程序的名字
    urlpatterns = [
    #主页,调用视图函数index,指定URL模式名称
    path('',views.index,name='index',)
    #旧版:url(r'^$',view.index.name='index'),第一个实参使用正则表达式与URL模式匹配
    ]
  • 编写视图
     from django.shortcuts import render
    
     # Create your views here.
    def index(request):
    '''学习笔记的主页'''
    #响应返回文件index.html的内容给urls.py调用的视图函数
    return render(request,'learning_logs/index.html')
  • 编写模板:在 learning_logs 下新建文件夹 /templates/learning_logs ,并新建一个 index.html 文件,以该模板来渲染网页
  • 查看效果:http://localhost:8000/ (如果出错了可在执行 runserver 的终端查看出错位置,修改后关闭终端重新执行一遍)
  • 新版在 URL 映射使用 正则表达式 ,需先导入 re_path 模块使用,不然会出错。
     from django.urls import path,re_path
    '''定义learning_logs的URL模式'''
    --snip--
    urlpatterns = [
    #主页
    #旧版:
    #url(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic'),
    re_path(r'^topics/(?P<topic_id>\d+)/$',views.topic,name='topic')
  • 映射URL的流程:
    1. 在项目文件夹 learning_log 下的 urls.py 文件添加应用程序 learning_logs的URL learning_logs.urls 及在网页上相匹配的名称(正则表达式的内容);
    2. 在应用程序 learning_logs 的 urls.py 中添加网页上相匹配的URL名称和需调用的 视图函数 、为该应用程序的URL命名 name='index' ,及命名空间 app_name = ‘learning_logs’ (一般为应用程序的名称);
    3. 视图函数 views.py 定义网页的某些显示特性页面,然后响应并提供一个创建网页的模板返回给上层调用者;
    4. 编写一个 html 模板,名字与视图函数中提供的模板一致。

#因与书中版本不同,花费了较多时间寻找适合版本的代码,感谢他人的分享。希望对像我一样碰到该问题的人能在此得到解决。

window下的Django入门的更多相关文章

  1. Window下python2.7+Apache+mod_wsgi+Django服务器配置

    前言:试着使用python搭建一个网页,分别在windows下和linux下,本篇文章主要讲解Window下python+Apache+mod_wsgi+Django服务器配置过程中遇见的问题和解决方 ...

  2. window下golang使用gRPC入门案例&net core客户端

    gRPC是google开源高性能分布式RPC框架,支持http/2 双向数据流传输及Protobuff,可以在任何环境下运行. 它可以有效地将数据中心内和跨数据中心的服务与可插拔支持进行负载均衡,跟踪 ...

  3. 【django入门教程】Django的安装和入门

    很多初学django的朋友,都不知道如何安装django开发以及django的入门,今天小编就给大家讲讲django入门教程. 注明:python版本为3.3.1.Django版本为1.5.1,操作系 ...

  4. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  5. python学习笔记--Django入门四 管理站点

    上一节  Django入门三 Django 与数据库的交互:数据建模 "管理员界面"是基础功能中的重要部分. django.contrib 包 Django自动管理工具是djang ...

  6. Django 入门

    Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...

  7. Django入门实践(三)

    Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...

  8. Django入门实践(二)

    Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...

  9. 完整的Django入门指南学习笔记4

    前言 这一章节将会全面介绍 Django 的身份认证系统,我们将实现注册.登录.注销.密码重置和密码修改的整套流程. 同时你还会了解到如何保护某些试图以防未授权的用户访问,以及如何访问已登录用户的个人 ...

随机推荐

  1. 【Alpha版本】冲刺阶段——Day6

    [Alpha版本]冲刺阶段--Day6 阅读目录 今日进展 问题困难 明日任务 今日贡献量 TODOlist [今日进展] 为注册模块增加界面代码 public static void Windows ...

  2. CRM 权限设置

    表结构的设计 权限表 url -url地址的正则表达式 ^$ title - 标题 角色表 name - 角色名称 permissions 多对多关联权限表 (权限和角色的关系表) 用户表 name ...

  3. P5015 标题统计

    P5015 标题统计 ‘   ’ 不等于空格,空格是个字符 代码: #include<iostream> #include<cstdio> #include<cmath& ...

  4. Java精选面试题之Spring Boot 三十三问

    Spring Boot Spring Boot 是微服务中最好的 Java 框架. 我们建议你能够成为一名 Spring Boot 的专家. 问题一: Spring Boot.Spring MVC 和 ...

  5. 面试必问之JVM篇

    前言 只有光头才能变强 JVM在准备面试的时候就有看了,一直没时间写笔记.现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书. 学习JVM的目的也很简单: 能够知道JVM是什么,为我们干 ...

  6. Docker学习笔记之搭建 Java Web 项目运行环境

    0x00 概述 Java Web 泛指以 Java 程序为基础向外提供 Web 服务的技术及相关工具,狭义上来说,我们也可以说 Java Web 是由 Servlet 程序提供的 Web 服务. 对我 ...

  7. Git clone 报错 Unable to negotiate with xxx.xxx.xxx.xxx port 12345: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc

    git clone 报错 Unable to negotiate with xxx.xxx.xxx.xxx. port 12345: no matching cipher found. Their o ...

  8. 树莓派无显示器开启ssh的方法

    在boot根目录新建一个名为 ssh 的空文件即可. boot目录所在分区是fat32格式,可以被windows识别和操作 带有系统的tf卡(或SD卡)插入读卡器中,新建ssh文件即可,注意无后缀名

  9. direct加载之ora-39782一例

    近日,我们有个环境在数据加载到oracle的时候出现ora-39782异常,版本是11.2.经google,几乎没有什么先例,因为我们是使用oci直接写的,可见现在还使用oci接口并不多,也或者我们的 ...

  10. rabbitmq集群安装与配置(故障恢复)

    0.首先按照http://www.cnblogs.com/zhjh256/p/5922562.html在至少两个节点安装好(不建议单机,没什么意义) 1.先了解rabbitmq集群架构,http:// ...