一个Django快速预览项目

创建一个Django项目,会用到一些包,但是下载多了会导致电脑变卡、变慢,这个时候可以用到虚拟环境来解决这个问题,每写一个项目,便可以在虚拟环境内配置各种环境而不影响电脑本身的环境.

  • 我是用的是win10系统
  1. 首先先安装vitualenv:
pip install virtualenv

如果系统内有多个python环境的话,可以指定使用哪一个版本的python来安装.

python2 -m pip install virtualenv

python3 -m pip install virtualenv
  1. 新建一个虚拟环境:

    可以先在想要创建虚拟环境的盘内新建一个文件夹,使用命令行切换目录过去,在当前目录下新建虚拟环境,便于操作.

virtualenv [虚拟环境名称]

安装成功后会在当前目录多一个文件夹
同样是多个python版本的用户可以指定版本

 virtualenv -p C:\Python27\python2.exe test2
  1. 虚拟环境基础操作

    进入虚拟环境:首先命令行进入test1文件夹下的Scripts目录.

开启虚拟环境:activate/activate.bat
退出虚拟环境:deactivate/deactivate.bat

进入虚拟环境之后,可以通过pip来下载项目所需要的包和模块.

pip install django==1.11    安装1.11版本的django
  • 但是这样有个缺点就是每次必须进入Scripts目录下,所以推荐使用一个扩展工具:virtualenvwrapper
安装:pip install virtualenvwrapper-win

有需要的朋友可以把默认安装虚拟环境的目录配置一下,没有需要的这一步可以跳过的.
先在自己想要新建虚拟环境的地方新建文件夹,把它的目录地址复制,然后添加至系统变量中:

然后重启cmd命令行,就可以使用了,如果不指定的话,默认是在C:\Users\Administrator\Evns 这个目录下.

  • 新建虚拟环境:
    mkvirtualenv + [环境名]
  • 也可指定新建虚拟环境的版本:
    mkvirtualenv --python=[python路径] + [环境名]
  • 查看所有通过mkvirtualenv创建的虚拟环境----- workon
  • 进入虚拟环境----workon + [环境名]
  • 退出虚拟环境----deactivate
  1. 接下在让咱们新将一个虚拟环境,并进入:
mkvirtualenv django_python
workon django_python
  1. 安装django:
pip install django==1.11
  1. 我以我的目录为例:
cd D:\Django_project

django-admin startproject test1 [项目名称]
  1. 然后进入项目目录:
cd test1

里面会有一些目录和文件:

  • manage.py是项目管理文件,通过它管理项目.
  • 与项目同名的目录,此处为test1.
  • init.py是一个空文件,作用是这个目录test1可以被当作包使用.
  • settings.py是项目的整体配置文件.
  • urls.py是项目的URL配置文件.
  • wsgi.py是项目与WSGI兼容的Web服务器入口.
  1. 创建应用:
python manage.py startapp booktest

应用目录里面也会有文件和目录:

  • _init.py_是一个空文件,表示当前目录booktest可以当作一个python包使用.
  • tests.py文件用于开发测试用例,在实际开发中会有专门的测试人员,这个事情不需要我们来做.
  • models.py文件跟数据库操作相关.
  • views.py文件跟接收浏览器请求,进行处理,返回页面相关.
  • admin.py文件跟网站的后台管理相关.
  1. 安装应用:

    应用创建成功后,需要安装才可以使用,也就是建立应用和项目之间的关联,在test1/settings.py中INSTALLED_APPS下添加应用的名称就可以完成安装。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'booktest',           这一行是新加入的
]
  1. 开发服务器:

    在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用.

命令 : python manage.py runserver ip:端口
ip和端口可以省略
例如:
python manage.py runserver
然后在浏览器中输入网址“127.0.0.1:8000”

  • 显示上图即为成功!
  1. 退出服务器,定义模型类:
    例:

    游戏类:
    Gname:游戏名字
    Gtime:创建事件

from django.db import models

# Create your models here.
class Game(models.Model):
    Gname = models.CharField(max_length=50)
    Gtime = models.DateTimeField()

    def __str__(self):
        return self.Gname
  1. 进行迁移,分为两步:
  • 生成迁移文件:根据模型类生成创建表的迁移文件。
  • 执行迁移:根据第一步生成的迁移文件在数据库中创建表。

    生成迁移文件命令如下:

python manage.py makemigrations

执行生成迁移文件命令后,会在应用booktest目录下的migrations目录中生成迁移文件。
执行迁移命令如下:

python manage.py migrate

当执行迁移命令后,Django框架会读取迁移文件自动帮我们在数据库中生成对应的表格。

  1. 设计英雄类:
    hname:名字;
    hclass:分类;
    hcomment:介绍;
    hgame:所属游戏(外键)
class Hero(models.Model):
    hname = models.CharField(max_length=20)
    hclass = models.CharField(max_length=50)
    hcomment = models.CharField(max_length=200)
    hgame = models.ForeignKey(Game)

    def __str__(self):
        return self.hname

创建完成之后再次进行迁移.
然后在命令行输入:

python manage.py shell
  • 首先引入booktest/models中的类:
from booktest.models import *

查询所有游戏信息:

Game.objects.all()     因为当前并没有数据,所以返回空列表
  1. 新建一个游戏对象:
g=Game()
g.gname="王者荣耀"
import datetime
g.gtime=datetime.datetime.now()
g.save()

再次查询所有游戏信息:

Game.objects.all()

查找图书信息并查看值:

g=Game.objects.get(id=1)

删除图书信息:

b.delete()

游戏与英雄是一对多的关系,django中提供了关联的操作方式。
获得关联集合:返回当前game对象的所有hero。

b.hero_set.all()

12 .管理界面本地化:

本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化,中国大陆地区使用简体中文,时区使用亚洲/上海时区,注意这里不使用北京时区表示.

  • 打开test1/settings.py文件,找到语言编码、时区的设置项,将内容改为如下:
LANGUAGE_CODE = 'zh-hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间
  1. 创建管理员
  • 创建管理员的命令如下,按提示输入用户名、邮箱、密码。
python manage.py createsuperuser
  • 接下来启动服务器
python manage.py runserver

登录成功后界面如下,但是并没有由游戏、英雄的管理入口,接下来进行第三步操作。

  1. 注册模型类:

    打开booktest/admin.py文件,编写如下代码:

from django.contrib import admin
from .models import *

admin.site.register(Game)
admin.site.register(Hero)
  1. 自定义数据管理页面:

    打开game/admin.py文件,自定义类,继承自admin.ModelAdmin类。

  • 属性list_display表示要显示哪些属性:
class GameAdmin(admin.ModelAdmin):
    list_display = ['id', 'Gname', 'Gtime']

class HeroAdmin(admin.ModelAdmin):
    list_display = ['id','hname','hclass','hcomment','hgame']

修改模型类的注册代码如下:

admin.site.register(Game,GameAdmin)
admin.site.register(Hero,HeroAdmin)
  • 最终booktest/admin.py文件代码如下:
from django.contrib import admin
from .models import *

class GameAdmin(admin.ModelAdmin):
    list_display = ['id', 'Gname', 'Gtime']

class HeroAdmin(admin.ModelAdmin):
    list_display = ['id','hname','hclass','hcomment','hgame']

admin.site.register(Game,GameAdmin)
admin.site.register(Hero,HeroAdmin)
  1. 配置URLconf:

    一条URLconf包括url规则、视图两部分:

  • url规则使用正则表达式定义。
  • 视图就是在views.py中定义的视图函数。

    需要两步完成URLconf配置:

  • 1.在应用中定义URLconf.
  • 2.包含到项目的URLconf中.

在game/应用下创建urls.py文件,定义代码如下:

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$',views.index),         # 不要加括号
    url(r'^(\d+)$',views.index2)
]

包含到项目中:打开test2/urls.py文件,为urlpatterns列表增加项如下:

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('game.urls'))
]
  1. 创建模板:

    为应用game下的视图index创建模板index.html

设置查找模板的路径:打开test2/settings.py文件,设置TEMPLATES的DIRS值:

  1. 定义模板:

    打开templtes/booktest/index.html文件,定义代码如下:.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .box{

            border: 1px solid rebeccapurple;

        }
        .box a{
            color: black;
            font-size: 20px;
            text-decoration: none;
            transition: all 500ms linear,color 200ms;
        }
        .box a:hover{
            color: fuchsia;

        }
        .addd{
            width: 100%;
            height: 50px;
            background-color: slategray;
            border-radius: 4px;
        }
        .addd p{
            font-size: 20px;
            color: white;
            line-height: 50px;
            margin-left: 20px;
        }
    </style>
</head>
<body>
<div class="addd">
   <p>查看</p>
</div>
<div class="box">
    <ul style="list-style: none">
        {% for game in list %}
            <li><a href="/{{ game.id }}" target="_blank" >
                {{ game.Gname }}
            </a></li>
            <li style="color: red;font-size: 20px;">{{ game.Gtime }}</li>
            <li><hr/></li>

        {% endfor %}
    </ul>
</div>
</body>
</html>

效果为:

  • 在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的。
    {{变量名}}
  • 在模板中编写代码段语法如下:
    {%代码段%}
  1. 打开game/views.py文件,调用上面定义的模板文件:
from django.shortcuts import render
from django.http import HttpResponse
from .models import *
from django.template import loader

# Create your views here.

def index(request):
    list = Game.objects.all()
    template = loader.get_template('game/index.html')

    ctx = {
        'list':list
    }

    return HttpResponse(template.render(ctx))
def index2(request,gid):
    game = Game.objects.get(id=gid)
    list = game.hero_set.all()
    template = loader.get_template('game/index2.html')

    ctx = {
        'game': game,
        'list': list
    }

    return HttpResponse(template.render(ctx))
  1. 定义URLconf:

    编写game/urls.py文件如下:

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^$',views.index),         # 不要加括号
    url(r'^(\d+)$',views.index2)
]

然后就可以run起来了.

原文地址:https://www.cnblogs.com/lygiants/p/11118373.html

时间: 2024-07-31 23:21:54

一个Django快速预览项目的相关文章

快速预览文档组件Oracle Outside In Technology

http://www.oracle.com/technetwork/cn/middleware/webcenter/content/downloads/oit-dl-otn-088510-zhs.html Viewer Technology 8.5.1 发布日期: 11/17/2014 该 SDK 将支持的文件类型的高保真表示呈现在一个视图窗口中,不依赖于原生应用.它提供文件查看.打印.复制/粘贴以及批注功能.可通过一个 C 语言 API 进行访问. 这个东西可以实现快速预览常见格式的文档,打开

高精度快速预览打开dwg文件的CAD控件CAD Image DLL介绍及下载

CAD Image DLL对于DXF格式, DWG格式(AutoCAD R12 到AutoCAD 2004/2005), PLT 以及 HPGL/HPGL2文件都有快速的显示速度和精度,开发者再也不会为如何打开dwg文件?dwg格式用什么打开?犯愁了.CAD Image DLL价格经济,是理想的商业化的程序内置CAD控件,包括Visual Basic, MS Visual C++, MS Visual Studio .NET, Borland Delphi, Borland C++ Builde

angularjs学习总结(快速预览版)

对html标签的增强 -> 指令 指令的本质是什么 声明的方式调用相应的脚本,实现一些操作,声明的所在的dom就是脚本的执行上下文? 自定义标签 -- 标签指令自定义属性 -- 属性指令特定格式注释 -- 注释指令 概念模板 视图 模型 模块 指令 依赖注入 路由 > MVVM其他MVC框架 backbone emberjsAngular不依赖其他任何框架AngularJs重新定义了前端应用的开发方式,AngularJs特别适合开发单页面应用(SPA) > AngularJs的特性1.

一个支持实时预览的在线 Markdown 编辑器 - Markdoc

最近组内需要为一些项目和系统写文档,发表在公司内的文档平台上,这个平台并不支持markdown,所以打算做一个在线markdown编辑器,支持实时预览,并且可以很容易的迁移发表到公司文档平台上,所以就有了这个 Markdoc. 在线地址:http://weareoutman.github.io/markdoc/ 截图: 使用 左侧写 markdown 右侧实时预览 两侧滚动关联 自动内容记忆,下次打开时自动恢复内容 可下载为 markdown, doc, html 鼠标单击预览区,ctrl+A,

让Win10更好的关键:Windows Insider预览项目成立两周

两年前的今天,微软正式启动了Windows Insider会员测试项目,作为开发和测试.发展最新的Windows10系统的重要收集建议.反馈来源.Windows Insider允许用户以极其简单的方式提前收到Win10预览版推送,用上最新功能. 有趣的是,在Windows Insider项目正式启动前,微软预计会有25万左右的人员加入测试大家庭,最高预计40万.去年前任Windows Insider负责人Gabe Aul表示,这是公司最疯狂的梦想,预计参与人数会增加.到2015年9月,Windo

Sublime Text3如何快速预览html文件

Sublime Text3 步骤1:选择 Tools----> Build System ----> New Build System... 步骤2:输入以下内容 "cmd":["explorer.exe","$file"] 步骤3:重命名文件并保存然后用快捷键Ctrl+B即可打开默认浏览器进行预览 原文地址:https://www.cnblogs.com/wuyiz/p/9643851.html

多线程基础入门(快速预览)

多线程基础: 进程: 系统中正在运行的一个应用程序(一种状态). 每个进程之间是相互独立的,每个进程在其受保护专用的内存空间内. 线程: 一个进程要想执行任务,必须要有线程(每个进程至少有一条线程) 一个进程所有的任务都是在线程中执行的. 线程的串行 一个线程中的任务的执行是串行的 如果在一个线程中执行多个任务,那么只能一个一个按顺序执行这些任务 同一个时间内,一个线程只能执行一个任务 进程和线程的比较: 线程是CPU调用(执行任务)的最小单位 进程是CPU分配资源和调度的单位 一个程序可以对应

Java 9 新特性快速预览

原文出处:wangwenjun69 Java 8 已经出来三年多的时间了,原本计划2016年七月份release Java 9,但是基于种种原因,Java 9 被推迟到了2017年的3月份,本人也在Open JDK的官网上看到了Java 10的标准也在制定当中,Java的发展真的越来越快了,在Java 9正式发布之前,我们可以使用它的SNAPSHOT版本,先来体验一下Java 9 有哪些新的特性,下面的清单来自于官方文档,看着似乎很多,但是真正具有颠覆意义的其实就是Module System,其

一个上传图片,预览图片的小demo

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>3</title> <script> function getFullPath(obj) { if (obj) { //Internet Explorer if (window.navigator.userAgent.indexOf("MSIE") >= 1)