标签:use 推荐 return djang 荣耀 pts 导致 根据 技术
创建一个Django项目,会用到一些包,但是下载多了会导致电脑变卡、变慢,这个时候可以用到虚拟环境来解决这个问题,每写一个项目,便可以在虚拟环境内配置各种环境而不影响电脑本身的环境.
pip install virtualenv
如果系统内有多个python环境的话,可以指定使用哪一个版本的python来安装.
python2 -m pip install virtualenv
python3 -m pip install virtualenv
新建一个虚拟环境:
可以先在想要创建虚拟环境的盘内新建一个文件夹,使用命令行切换目录过去,在当前目录下新建虚拟环境,便于操作.
virtualenv [虚拟环境名称]
安装成功后会在当前目录多一个文件夹 同样是多个python版本的用户可以指定版本
virtualenv -p C:\Python27\python2.exe test2
虚拟环境基础操作
进入虚拟环境:首先命令行进入test1文件夹下的Scripts目录.
开启虚拟环境:activate/activate.bat
退出虚拟环境:deactivate/deactivate.bat
进入虚拟环境之后,可以通过pip来下载项目所需要的包和模块.
pip install django==1.11 安装1.11版本的django
安装:pip install virtualenvwrapper-win
有需要的朋友可以把默认安装虚拟环境的目录配置一下,没有需要的这一步可以跳过的.
先在自己想要新建虚拟环境的地方新建文件夹,把它的目录地址复制,然后添加至系统变量中:
然后重启cmd命令行,就可以使用了,如果不指定的话,默认是在C:\Users\Administrator\Evns 这个目录下.
mkvirtualenv django_python
workon django_python
pip install django==1.11
cd D:\Django_project
django-admin startproject test1 [项目名称]
cd test1
里面会有一些目录和文件:
python manage.py startapp booktest
应用目录里面也会有文件和目录:
安装应用:
应用创建成功后,需要安装才可以使用,也就是建立应用和项目之间的关联,在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', 这一行是新加入的
]
开发服务器:
在开发阶段,为了能够快速预览到开发的效果,django提供了一个纯python编写的轻量级web服务器,仅在开发阶段使用.
命令 : python manage.py runserver ip:端口
ip和端口可以省略
例如:
python manage.py runserver
然后在浏览器中输入网址“127.0.0.1:8000”
退出服务器,定义模型类:
例:
游戏类: 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
执行迁移:根据第一步生成的迁移文件在数据库中创建表。
生成迁移文件命令如下:
python manage.py makemigrations
执行生成迁移文件命令后,会在应用booktest目录下的migrations目录中生成迁移文件。
执行迁移命令如下:
python manage.py migrate
当执行迁移命令后,Django框架会读取迁移文件自动帮我们在数据库中生成对应的表格。
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
from booktest.models import *
查询所有游戏信息:
Game.objects.all() 因为当前并没有数据,所以返回空列表
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 .管理界面本地化:
本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化,中国大陆地区使用简体中文,时区使用亚洲/上海时区,注意这里不使用北京时区表示.
LANGUAGE_CODE = 'zh-hans' #使用中国语言
TIME_ZONE = 'Asia/Shanghai' #使用中国上海时间
python manage.py createsuperuser
python manage.py runserver
打开浏览器,在地址栏中输入如下地址后回车。
登录成功后界面如下,但是并没有由游戏、英雄的管理入口,接下来进行第三步操作。
注册模型类:
打开booktest/admin.py文件,编写如下代码:
from django.contrib import admin
from .models import *
admin.site.register(Game)
admin.site.register(Hero)
自定义数据管理页面:
打开game/admin.py文件,自定义类,继承自admin.ModelAdmin类。
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)
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)
配置URLconf:
一条URLconf包括url规则、视图两部分:
视图就是在views.py中定义的视图函数。
需要两步完成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'))
]
创建模板:
为应用game下的视图index创建模板index.html
设置查找模板的路径:打开test2/settings.py文件,设置TEMPLATES的DIRS值:
定义模板:
打开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>
效果为:
- 在模板中输出变量语法如下,变量可能是从视图中传递过来的,也可能是在模板中定义的。
{{变量名}}- 在模板中编写代码段语法如下:
{%代码段%}
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))
定义URLconf:
编写game/urls.py文件如下:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',views.index), # 不要加括号
url(r'^(\d+)$',views.index2)
]
然后就可以run起来了.
标签:use 推荐 return djang 荣耀 pts 导致 根据 技术
原文地址:https://www.cnblogs.com/lygiants/p/11118373.html