window下的Django入门
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:
- 定义模型:在文件 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 - 激活模型:打开 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 创建一个表;再应用迁移
迁移数据的流程:
- 修改 models.py 文件;
- 执行命令 python manage.py makemigrations app_name ( app_name 应用程序的名称,即 settings.py 文件中添加的: learning_logs );
- 再执行命令 python manage.py migrate 。
- 管理网站:创建超级用户;然后在 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/ 时需通过账号密码,然后进入下图:
- 添加另一个模型,使添加的每个条目与特定主题相关联,实现多对一的关系。步骤与上一个模型一样,然后刷新网站,可在 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的流程:
- 在项目文件夹 learning_log 下的 urls.py 文件添加应用程序 learning_logs的URL learning_logs.urls 及在网页上相匹配的名称(正则表达式的内容);
- 在应用程序 learning_logs 的 urls.py 中添加网页上相匹配的URL名称和需调用的 视图函数 、为该应用程序的URL命名 name='index' ,及命名空间 app_name = ‘learning_logs’ (一般为应用程序的名称);
- 视图函数 views.py 定义网页的某些显示特性页面,然后响应并提供一个创建网页的模板返回给上层调用者;
- 编写一个 html 模板,名字与视图函数中提供的模板一致。
#因与书中版本不同,花费了较多时间寻找适合版本的代码,感谢他人的分享。希望对像我一样碰到该问题的人能在此得到解决。
window下的Django入门的更多相关文章
- Window下python2.7+Apache+mod_wsgi+Django服务器配置
前言:试着使用python搭建一个网页,分别在windows下和linux下,本篇文章主要讲解Window下python+Apache+mod_wsgi+Django服务器配置过程中遇见的问题和解决方 ...
- window下golang使用gRPC入门案例&net core客户端
gRPC是google开源高性能分布式RPC框架,支持http/2 双向数据流传输及Protobuff,可以在任何环境下运行. 它可以有效地将数据中心内和跨数据中心的服务与可插拔支持进行负载均衡,跟踪 ...
- 【django入门教程】Django的安装和入门
很多初学django的朋友,都不知道如何安装django开发以及django的入门,今天小编就给大家讲讲django入门教程. 注明:python版本为3.3.1.Django版本为1.5.1,操作系 ...
- python学习笔记--Django入门四 管理站点--二
接上一节 python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...
- python学习笔记--Django入门四 管理站点
上一节 Django入门三 Django 与数据库的交互:数据建模 "管理员界面"是基础功能中的重要部分. django.contrib 包 Django自动管理工具是djang ...
- Django 入门
Django 入门 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模型,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容 ...
- Django入门实践(三)
Django入门实践(三) Django简单应用 前面简单示例说明了views和Template的工作过程,但是Django最核心的是App,涉及到App则会和Model(数据库)打交道.下面举的例子 ...
- Django入门实践(二)
Django入门实践(二) Django模板简单实例 上篇中将html写在了views中,这种混合方式(指Template和views混在一起)不适合大型开发,而且代码不易管理和维护,下面就用Djan ...
- 完整的Django入门指南学习笔记4
前言 这一章节将会全面介绍 Django 的身份认证系统,我们将实现注册.登录.注销.密码重置和密码修改的整套流程. 同时你还会了解到如何保护某些试图以防未授权的用户访问,以及如何访问已登录用户的个人 ...
随机推荐
- 【JavaScript 6连载】六、认识原型
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 【JavaScript 6连载】四、apply和call的用法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- centos6.8安装DB2 10.5
1.把tar拷贝到/opt下面,用root账户,安装软件包 cd /opt tar -zxvf v9.5fp3b_linuxx64_server.tar.gz (64位) cd server ./db ...
- linux下mysql 8.0忘记密码后重置密码
1://免密码登陆 找到mysql配置文件:my.cnf, 在[mysqld]模块添加:skip-grant-tables 保存退出: 2://使配置生效 重启mysql服务: service ...
- 算法提高 P0101
一个水分子的质量是3.0*10-23克,一夸脱水的质量是950克.写一个程序输入水的夸脱数n(0 <= n <= 1e10),然后输出水分子的总数.输入 109.43输出 3.465283 ...
- 苹果手机显示分享链接的方法html页面
function onBridgeReady(){ WeixinJSBridge.call('showOptionMenu'); } if (typeof WeixinJSBridge == &quo ...
- Django框架----视图(views)
Django的Views(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误 ...
- JOBDU 题目1100:最短路径
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5786 解决:902 题目描述: N个城市,标号从0到N-1,M条道路,第K条道路(K从0开始)的长度为2^K,求编号为0的城市到其他城市的 ...
- com.sun.jersey.api.client.UniformInterfaceException:returned a response status of 403
这是在同一台电脑上,然后启动两台tomcat进行文件传输时候,会出现的一个异常. 403,是因为tomcat默认禁止上传,在tomcat中的config中的web.xml中进行以下的配置就可以进行文件 ...
- mysql执行计划查看工具explain
在优化sql语句时,我们经常会用到explain语句,这里对explain语句做一个详细的总结说明. The EXPLAIN statement provides information about ...