文档章节

Django 速成笔记(1)--一些Django常用命令及技巧汇总

J_sky
 J_sky
发布于 2017/07/13 10:00
字数 1433
阅读 63
收藏 0

Django 的环境搭建。

环境搭建的文章网上已经很多了,这里不提了,可以看看官方文档或是百度搜索下。

测试环境:

Django:1.11.3

Python ;3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)

系统: os x 10.11.6

IDE : VSCode

基本命令

终端下进入需要创建项目的目录,然后输入:

django-admin startproject 你的项目名称 #创建项目

python3 manage.py startapp 你的应用名称
#一般一个项目有多个app, 当然通用的app也可以在多个项目中使用。

初始化数据库

终端下输入,如果成功的话应该和下边是一样的

输入:python3 manage.py makemigrations
No changes detected
输入:python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

启动服务器

如果启动正常,终端应该显示如下:

python3 manage.py runserver 8888
Performing system checks...

System check identified no issues (0 silenced).
July 13, 2017 - 01:16:28
Django version 1.11.3, using settings 'djangoTest.settings'
Starting development server at http://127.0.0.1:8888/
Quit the server with CONTROL-C.

###一些常用Django 终端命令:

python manage.py flush  #清空数据库

python manage.py createsuperuser
 # 按照提示输入用户名和对应的密码就好了邮箱可以留空,用户名和密码必填
 
# 修改 用户密码可以用:
python manage.py changepassword username


#导入导出数据
python manage.py dumpdata appname > appname.json
python manage.py loaddata appname.json

#Django的终端及数据终端
python manage.py shell
python manage.py dbshell

python manage.py #可以查看更多命令

###环境搭建总结: 通过php java Python项目及环境搭建对比,Django算是最高级的了,一键集成项目的大部分功能了,其次是java的springboot 通过简单的配置也可以愉快的搭建出项目的调度环境,php好久没弄,不太记得了。。还记得一些thinkPHP。

###新建APP

python3 manage.py startapp blog

然后配置项目目录下的settings.py 添加'blog',到最后

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

###视图

APP目录下views.py 编写视图:

#coding=utf-8
#声明编码,防止中文乱码
from django.shortcuts import render
from django.http import HttpResponse

def index(request):
    return HttpResponse(u'你好,Django 江哥?')

路由

  1. 先引入APP的urls到项目的urls.py文件中,编辑项目中的urls.py文件加入:
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('blog.urls', namespace='blog')),
]

2.添加APP路由,编辑APP下usrls.py:

from django.conf.urls import url
from django.contrib import admin
from . import views as v#引项目的视图文件

urlpatterns = [
    url(r'^$', v.index),#项目首页
]

如果你的服务器还没有关闭,可以直接测试了:

输入图片说明

###url 路由

获得?a=Hello&b=World url中a b的变量值

路由url 配置

from django.conf.urls import url
from django.contrib import admin
from . import views as v #引项目的视图文件

urlpatterns = [
    url(r'^$', v.index),#项目首页
    url(r'^getkey$', v.getKey, name='getkey'),#获得?a=Hello&b=World url中a b的变量值

]

视图中的代码:

def getKey(request):
    a = request.GET['a']
    b = request.GET['b']
    return HttpResponse(a+b)

输入图片说明

再来看看/getstr/hello/world/ 这样的网址如何获得值

路由url 配置 注意:这里尝试了两种写法,第二种是以前版本的写法?

from django.conf.urls import url
from django.contrib import admin
from . import views as v #引项目的视图文件

urlpatterns = [
    url(r'^$', v.index),#项目首页
    url(r'^getkey$', v.getKey, name='getkey'),#获得?a=Hello&b=World url中a b的变量值
    url(r'^getstr/(?P<a>\w+)/(?P<b>\w+)$', v.getStr, name='getstr'),#获得/getstr/hello/world/ url中的变量值
    url(r'^getstr1/(\w+)/(\w+)$', v.getStr, name='getstr1'),#另一种写法,获得/getstr/hello/world/ url中的变量值

]

视图中的代码:

def getStr(request,a,b):
    return HttpResponse(a+b)

输入图片说明

输入图片说明

模板 Templates

视图中的代码:

#添加模板
def home(request):
    s = 'Hello World!'
    return render(request, 'home.html', {'s':s})

路由中的代码:

url(r'^home$', v.home,name='home'),

在blog目录下建立一个templates的目录,用来存放blog应用的模板html文件

模板中的html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>hello Blog</title>
</head>
<body>
    <h1>{{ s }}</h1>
</body>

</html>

运行服务器,预览一下。 输入图片说明

模板通用代码模块的组装:

可以写一个 base.html 来包含这些通用文件

<!DOCTYPE html>
<html>
<head>
    <title>{% block title %}默认标题{% endblock %}</title>
</head>
<body>
{% include 'nav.html' %}
{% block content %}
<div>这里是默认内容,所有继承自这个模板的,如果不覆盖就显示这里的默认内容。</div>
{% endblock %}
{% include 'bottom.html' %}
</body>
</html>

我们继承这个通用模板页来创建自己的新模板:

{% extends 'base.html' %}
{% block title %}欢迎光临首页{% endblock %} 
{% block content %}
{% include 'ad.html' %}#可以自己增加其它模块
这里是首页,欢迎光临
{% endblock %}

Django 模板查找机制: Django 查找模板的过程是在每个 app 的 templates 文件夹中找(而不只是当前 app 中的代码只在当前的 app 的 templates 文件夹中找)。各个 app 的 templates 形成一个文件夹列表,Django 遍历这个列表,一个个文件夹进行查找,当在某一个文件夹找到的时候就停止,所有的都遍历完了还找不到指定的模板的时候就是 Template Not Found (过程类似于Python找包)。这样设计有利当然也有弊,有利是的地方是一个app可以用另一个app的模板文件,弊是有可能会找错了。所以我们使用的时候在 templates 中建立一个 app 同名的文件夹,这样就好了。_这就需要把每个app中的 templates 文件夹中再建一个 app 的名称,仅和该app相关的模板放在 app/templates/app/ 目录下面

© 著作权归作者所有

J_sky

J_sky

粉丝 18
博文 25
码字总数 12709
作品 3
朝阳
程序员
私信 提问
PYTHON资源入口汇总

官网 入口 官方文档 英文 document 2.7.6 入口| 标准库 document 3.x 入口 The Hitchhiker’s Guide to Python 入口 Python Monk 入口 中文 document 2.7 入口 非官方 google的python文档 Go...

好铁
2016/02/12
199
0
【django系列学习笔记】 常用命令汇总

项目相关 ----------------------------------------- 1. 新建一个 django-project django-admin.py startproject project-name 2. 新建 app python manage.py startapp app-name django-ad......

北方攻城师
2015/10/25
93
0
python资料全集

python: 微信公众号开发小记——2.80端口上的服务 python: 微信公众号开发小记——3.接入三方登录 使用python编写一个壁纸网站的简单爬虫 python: python List 用法 Python 中各个时间复杂度...

d_watson
2016/04/15
185
0
Django学习笔记(一)安装

Django是python一个非常流行的web架构,开发起来非常便捷强大,很适合初学者入门。 下面就将个人一些学习笔记和一些走过的坑整理如下。 1.安装 到官网https://www.djangoproject.com/下载Dja...

Radar_W
2014/03/21
51
0
Django 学习笔记之模型高级用法(下)

接着上篇文章内容,本文分享自己对模型一些用法的总结。 1 模型的元数据Meta 除了抽象模型,在模型中定义的字段都会成为表中的列。如果我们需要给模型指定其他一些信息,例如排序方式、数据库...

猴哥Yuri
2018/04/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot 403 问题

添加WebAppConfigurer 配置 @Configuration@EnableAutoConfigurationpublic class WebAppConfigurer extends WebMvcConfigurerAdapter { public WebAppConfigurer() { } ......

布袋和尚_爱吃鱼
13分钟前
3
0
Python自动更换壁纸爬虫与tkinter结合

直接上代码 import ctypesimport timeimport requestsimport osfrom threading import Threadfrom tkinter import Tk, Label, Button,Entry,StringVar,messagebox# '放到AppData\Roami......

物种起源-达尔文
13分钟前
2
0
Postgresql Study 笔记

Postgresql 安装 Windows, MAC Install Postgresql 下载地址: https://www.enterprisedb.com/downloads/postgres-postgresql-downloads Linux Install sudo apt-get update sudo apt-get in......

slagga
15分钟前
3
0
layer.open 打开新页面传参问题

如图所示,点击出售,把A页面的数据传到弹框上面,因为弹框比较复杂,所以使用引入一个新页面。 A.html a.js B.html b.js 1、第一种方案 sellInte: function (){ var obj = document.g...

木九天
18分钟前
3
0
沙龙报名 | 区块链数据服务技术应用实践

京东云是国内首家提供区块链数据在线分析服务产品的公司,也是行业内首家对区块链数据服务进行开源的公司。 本次沙龙是京东云BDS开源后,首次在深圳举办线下沙龙,我们将邀请京东云BDS团队核...

京东云技术新知
18分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部