创建项目,在命令行中输入:django-admin startproject mysite

则会创建一个名为mysite的项目。项目结构如下:

+mysite

|--+ugo

|          |--+migrations

|          |--__init__.py

|          |--admin.py

|          |--apps.py

|          |--models.py

|          |--tests.py

|          |--views.py

|--+mysite

|               |--+__pycache__

|               |--__init__.py

|               |--settings.py

|               |--urls.py

|               |wsgi.py

|--manage.py

|--db.sqlite3

|--+templates

|--+static

manage.py是主要的管理程序。

db.sqlite3是在执行完python manage.py migrate之后产生的,用于对应数据库。

urls.py用于指明什么样的url对应哪一种方法的对应关系。

settings用于设置整个项目,例如加入什么功能。

wsgi.py部署到主机上才会用到。

在mysite目录下执行 python manage.py startapp ugo ,会在mysite下创建一个app。ugo文件夹中包含__init__.py文件,说明

它是作为一个可导入的包,所以需要导入ugo才能看到这个模块中的内容。需要在settings中的变量INSTALLED_APPS中加

入ugo。

views.py用于编写被调用函数的具体实现

如果有必要设置模板template文件,让正确的模板在views.py中可调用,用于把函数执行完的结果转移到对应的模板中。可自行在mysite下创建文件夹templates存放html文件。创建完后在settings.py中把TEMPLATES变量中的DIRS的设置为templates的具体位置,例'DIRS': [os.path.join(BASE_DIR,'templates').repalce('\\','/')],

如果有必要设置models.py,建立与数据库的对应关系。

模板的使用

1.在setting.py中设置templates模板的目录

2.在urls.py中设置网址与函数(index)的映射

3.创建在templates下创建编辑index.html文件

4.在views.py视图中编辑index函数,函数返回的经过加工和传参的Index.html文件以HttpResponse(html)的形式

5.在model.py中设置存储数据的模板,用于和数据库进行交互

设置urls.py的网址与函数的对应关系

ffrom django.conf.urls import url

from django.contrib import admin

from ugo.views import index

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^$',index)

]

url()的第一个参数是正则表达式。用于匹配网址域名后的内容,r'^$'表示域名后没有任何内容,即http://localho

st:8000/这个网址,则会调用函数index.正则表达式中使用小括号括起来的部分会被当作参数,传给后面的函数。

在templates目录下创建index.html文件(使用{{now}}把变量now传入)

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>

我的第一个Django网站

</title>

</head>

<body>

<h1>欢迎光临</h1>

<h2>现在时刻: {{now}}</h2>

</body>

</html>

如果传递的变量是列表形式,在模板中可用for循环:

<h3>User lists</h3>

<ul>

{% for user in userlist %}

<li>{{user.name}}</li>

{% empty %}

<p>There is no user in the list</p>

{% endfor %}

</ul

{% for user in userlists %}和{% endfor %} 是一对。如果userlists是空列表就会显示放在{% empty %}下的内容。

编辑views.py的index(request)函数

from django.http import HttpResponse

from django.template.loader import get_template

from datetime import datetime

def index(request):

template=get_template('index.html')

html=template.render({'now':datetime.now})

return HttpResponse(html)

导入HttpResponse把输出的内容转换成HTTP的格式。

使用get_template()加载index.html文件,然后使用方法render()以字典形式传入变量now.对与多个入参变量,可以

使用locals()方法,它的功能是以字典形式返回所有当前在内存中的局部变量。例

template=get_template('index.html')

now=datetime.now

userlists=list()

userlist.append({'nane':'Richard'})

userlist.append({'nane':'John'})

userlist.append({'nane':'Mary'})

html=template.render(locals())

就可以把now,userlists这两个变量一并传递到template.renders中

这时在mysite目录下运行python manage.py runserver ,然后在浏览器中输入http://localhost:8000就会看到

‘欢迎光临!’这几个字。

tempalte中的模板也可以设置一个基础模板,然后在个性化的模板中继承该模板

例,编写基础模板:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>{%block title %}{% endblock %}</title>

<body>

<header>...</header>

<nav>...</nav>

{% block main %} {% endblock %}

<footer>...</footer>

</body>

</head>

</html>

保存为base.html,然后在子模板中使用 extends这个文件,,然后设置title和content就可以了

{% extends 'base.html' %}

{% block title %} 欢迎光临 {% endblock %}

{% block main % }

...这里放所有想要呈现的index.html中的主要内容...

{% endblock  %}

详情可参考 https://docs.djangoproject.com/en/1.7/topics/templates/

关于静态文件,不需要设置url与函数对应(通过函数来加工),直接显示要获取的文件,就是静态文件。在settings.py中

设置静态文件的根网址 STATIC_URL='/static/',

也就是网址前部分为http://localhost:8000/static时就会直接到静态文件目录读取文件。

设置静态文件的本地路径 STATICFILES_DIRS=[os.path.join(BASE_DIR,'static'),],在项目路径下创建文件夹static,在static里可按文件类别分别创建文件夹js,css,images.

在templates模板文件中获取静态文件:

...省略...

{% load staticfiles %}

<img src="{% static 'images/logo.png' %}" width=150/>

...省略...

5.models.py的基本格式如下:

class urllist(models.Model):

src_url=models.URLField()

short_url=models.CharField(max_length=20)

count=models.PositiveIntegerField()

def __unicode__(self):

return self.short_url

models中的数据类型及特性,具体可查看 https://docs.djangoproject.com/en/1.9/ref/models/fields/

在models中创建class,存盘后,可使用命令 python manage.py check 以确认所有设置的正确性。

python manage.py makemigrations ugo,最后的ugo表示我们创建的app ugo。

c:\pythonScripts\mysite>python manage.py check

System check identified no issues (0 silenced).

c:\pythonScripts\mysite>python manage.py makemigrations ugo

Migrations for 'ugo':

ugo\migrations\0001_initial.py

- Create model urllist

c:\pythonScripts\mysite>python manage.py migrate

Operations to perform:

Apply all migrations: admin, auth, contenttypes, sessions, ugo

Running migrations:

Applying ugo.0001_initial... OK

以上三步都没报错,说明这个数据表已经被创建完成,可以拿来使用了。

可以启用django预装的admin功能操作DB.sqlite3数据库。

在APP目录(ugo)下找到admin.py,将我们的数据模型做好注册即可:

from django.contrib import admin

# Register your models here.

from ugo.models import urllist

admin.site.register(urllist)

然后创建数据库的管理员账号

python manage.py createsuperuser

Username: admin

Email address: skynet.tw@gmail.com

Password:

Password (again):

在启动web服务器(python manage.py runserver)后,在浏览器中输入:localhost:8000/admin就可看到数据库

登陆界面,登陆后可看到admi主界面。

Django小示例的更多相关文章

  1. ReactNative新手学习之路06滚动更新ListView数据的小示例

    本节带领大家学习使用ListView 做一个常用的滚动更新数据示例: 知识点: initialListSize={200} 第一次加载多少数据行 onEndReached={this.onEndRea ...

  2. MVC客户端验证的小示例

    MVC客户端验证的小示例 配置客户端验证的可用性: <configuration> <appSettings>  <add key="ClientValidat ...

  3. 【.Net】Socket小示例

    引言 项目中用到了Socket,这里做个控制台小示例记录一下. Client 客户端的Receive用了异步方法,保持长连接,可以随时发送消息和响应服务端的消息,如下 static string Cl ...

  4. Django+小程序技术打造微信小程序助手 ✌✌

    Django+小程序技术打造微信小程序助手 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 从零到一的完整项目开发实战过程,项目开发聚焦重要知识点,先原理后实战 ...

  5. CentOS7 安装 RocketMQ 实践和小示例

    CentOS7 安装 RocketMQ 实践和小示例 1.通过 SSH 工具(比如 XShell)连接到 CentOS7 服务器上: 2.进入到 /usr/local 目录中: cd /usr/loc ...

  6. Django+小程序技术打造微信小程序助手

    Django+小程序技术打造微信小程序助手   整个课程都看完了,当前这个课程的分享可以往下看,下面有某盘的链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,同时也分享下自己的总结 ...

  7. Django 小实例S1 简易学生选课管理系统 12 CSS样式完善

    Django 小实例S1 简易学生选课管理系统 第12节--CSS样式完善 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块的逻辑代码到这里 ...

  8. Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现

    Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...

  9. Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现

    Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...

随机推荐

  1. linux下使用grep在当前目录下搜索所有文件中含有的字符串

    grep -r yourstr ./ 举例: grep -r sprintf ./ (在当前目录下递归查找含有字符串sprintf的文件)

  2. P3938 斐波那契

    思路 脑子还真的是好东西,自己太笨了 容易发现父亲节点和儿子节点的关系 儿子节点大于父亲节点 儿子节点和父亲节点之差为斐波那契数,且斐波那契数为小于儿子节点的最大的一个 1e12中有60左右的斐波那契 ...

  3. Https流程,openssl本地自建证书,抓包

    HTTPS:超文本安全传输协议,和HTTP相比,多了一个SSL/TSL的认证过程,端口为443在http(超文本传输协议)基础上提出的一种安全的http协议,因此可以称为安全的超文本传输协议.http ...

  4. 格子中输出|2015年蓝桥杯B组题解析第四题-fishers

    StringInGrid函数会在一个指定大小的格子中打印指定的字符串. 要求字符串在水平.垂直两个方向上都居中. 如果字符串太长,就截断. 如果不能恰好居中,可以稍稍偏左或者偏上一点. 下面的程序实现 ...

  5. trigger自动执行事件

    html <button>点击文字变红</button> <p>trigger出发点击事件</p> js $('button').click(funct ...

  6. POJ 3295 Tautology(构造法)

    http://poj.org/problem?id=3295 题意: 判断表达式是否为永真式. 思路: 把每种情况都枚举一下. #include<iostream> #include< ...

  7. Spring 入门 web.xml配置详解

    Spring 入门 web.xml配置详解 https://www.cnblogs.com/cczz_11/p/4363314.html https://blog.csdn.net/hellolove ...

  8. BZOJ 3992 【SDOI2015】 序列统计

    题目链接:序列统计 我来复习板子了……这道题也是我写的第一发求原根啊? 求原根方法: 从小到大依次枚举原根.设当前枚举的原根为\(x\),模数为\(p\),\(p-1\)的质因数分别为\(p_1,p_ ...

  9. Java 注解的概念与种类

    Java 注解的概念与种类 一,什么是注解 注解和XML文件都是常用的,对web项目进行配置性描述的方式. 举个最简单的例子,对于一个Servlet,比如LoginServlet,采用如下方式: @W ...

  10. Hyper-v群集的仲裁模式配置依据

    1,仲裁配置的原理 节点多数(推荐用于含有奇数个节点的群集) 可以承受的故障节点数为节点数的一半(四舍五入)减去一.例如,七个节点的群集可以承受三个节点出现故障. 节点和磁盘多数(推荐用于含有偶数个节 ...