Django小示例

创建项目,在命令行中输入: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: [email protected]

Password:

Password (again):

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

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

原文地址:https://www.cnblogs.com/Ting-light/p/9547332.html

时间: 2024-11-05 12:20:55

Django小示例的相关文章

PHP jQuery ajax 表单提交小示例(含insert, select)

功能描述:能够通过表单向MySQL数据库新增记录,能够表单提供关键词进行查询 index.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"&g

Hello SAS 1 -- 安装并运行一个小示例

1.安装 软件环境说明 win7 64位 + SAS9.4 准备工作 查看SAS的sid文件有效期,并修改系统时间为有效期之前的1个月,如图示: 修改sid 问题1:SAS EM创建项目报NO_FILE错误(报错时的场景是操作系统是中文,也没有修改系统时间) 解决方式: 1.操作系统语言改成英文版.(试过几次中文版的都失败了,不确定这是主因,因为安装成功时也修改了系统时间,之前失败的时候都没修改系统时间) 2.修改系统时间 2.创建Libraries及table 创建Libraries(软件重启

基于nodeJs express 框架的图片上传和编辑(引用美图编辑工具)上传小示例

唉,由于近期工作中对于新知识的运用相对较少,也导致小码哥少有更新鄙人心得的机会.还望路过的基友们不要抱怨,勿喷,,,,, 本篇文章,是基于NodeJs Express框架完成的一个用于项目中图片上传和编辑上传的小示例,当然,由于项目工期不禁,都是在非工作时间慢慢完成的,导致至今该图片上传功能也未能插入项目中真正的验证最终效果.不过就小码哥感觉,基本思路及基本功能算是完成了. 下面便由小码哥来给基友们稍微讲解改功能的实现过程及其中用到的一些技术等等. 首先,说说NodeJs Express框架的搭

js ajax数据的获取小示例 天气信息填充表格

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 现在大家写写了一个简单的ajax获取数据的小示例,希望能帮助需要帮助的. html代码: 1 <table border="1" > 2 <!--因为在谷歌上会自动添加tbody标签,其他浏览器不会有这标签,所以添加tbody是为了选取元素时不会发生混乱.--> 3 <tbody> 4 <tr> 5 <th>日期</th> 6 <th&

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

Django+小程序技术打造微信小程序助手 深入Django视图层,实践与理论相结合,带你系统地梳理视图层知识点 分层次介绍Django视图层的重要知识点,包括 HTTP请求和应答在Django框架中相应的Request对象/Response对象:Django的路由以及RESTful API设计:Django的文件管理:类视图简化视图层逻辑等等重要知识点:最后有关于视图层的实战内容. 3-1 Request&Response对象 3-2 Django的RESTful URL设计 3-3 实现个人

Django入门示例之被解放的姜戈——03 所谓伊人(模板及模板处理)

在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端.这一过程中使用了django.http.HttpResponse(). 在这样的一种回复生成过程中,我们实际上将数据和视图的格式混合了到上面的字符串中.看似方便,却为我们的管理带来困难.想像一个成熟的网站,其显示格式会有许多重复的地方.如果可以把数据和视图格式分离,就可以重复使用同一视图格式了. Django中自带的模板系统,可以将视图格式分离出来,作为模板使用.这样,不但视图可以容易修改,程序也会显得美观大方. 1.模板初

Highcharts入门小示例

一.创建条形图 1.创建div容器 <div id="container" style="min-width:800px;height:400px"></div> 2.编写图表配置代码 相关示例: <html> <head>  <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.m

Django 小问题

Django 初学小问题 创建方法 :略 小问题: settings 中 第二十八行  ALLOWED_HOSTS = []  括号内填ip地址 可以使外网访问 第三十三行 INSTALLED_APPS = [] 增加app文件时 需要在括号内添加 文件名,无需后缀 第四十三行  MIDDLEWARE = []   注释掉    # 'django.middleware.csrf.CsrfViewMiddleware', 要不 POST请求报错 第七十八行   使用pymysql 数据库时  D

AJAX小示例

一. 基本内容 定义:AJAX(Asynchronous Javascript And XML)翻译成中文就是"异步的Javascript和XML",即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML) 作用:AJAX就是使用 js 技术发送请求和接收响应 优点:在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容 特点: 异步交互 同步交互:客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求 异步交互: