1.创建django project

2.创建app

在一个project下可以创建多个app,比如运维系统这个project下面包含监控app、cmdb app等等,这些app共享project里的数据。

假如项目创建在/home/django/mysite下,则进入该目录,然后python manage.py startapp cmdb新建了一个app,在/home/django/mysite目录下会出现一个cmdb的目录,里面包含很多.py文件。

3.创建web服务器实现基本请求

修改mysite下的urls.py,

from cmdb import views

urlpatterns = [
#url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
]

修改cmdb下的views.py,

from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here. # 通过request参数接收用户的页面请求,所以此处是request
def index(request):
# 不能直接return字符串,需要借助HttpResponse()方法
return HttpResponse('')

重启django进入浏览器即可查看到效果。

4.导入静态文件(js,css,图片等)、给用户返回html

4.1 返回html

1.在cmdb的同级目录下新建一个templates目录,在templates目录里新建一个index.html,在html里写入内容。
2.修改cmdb的views.py
from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here. def index(request):
#return HttpResponse('123')
return render(request,'index.html')
3.修改mysite下的settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#添加模板目录,让django到DIRS的目录下找对应的html文件。
#BASE_DIR就是settings.py的父目录的父目录。
'DIRS': [os.path.join(BASE_DIR,'templates')],

4.2 引入静态文件

.修改settings.py
#STATIC_URL就是一个访问前缀。
STATIC_URL = '/qianzhui/'
STATICFILES_DIRS=(
#最后必须加个“,”,不然会提示不是元组,找不到静态文件
os.path.join(BASE_DIR,'statics'),
) .修改html
<body>
<h1>,test.</h1>
<script src="/qianzhui/jquery-1.12.4.js"></script>
</body>

5. 实现表单提交

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>123</title>
</head>
<body>
<h1>123,test.</h1> <form action="/index/" method="POST">
<input type="text" name="username" />
<input type="password" name="password" />
<!--input type="email" name="email" /-->
<input type="submit" /> </form> <h1>DATA:</h1>
<table border="">
#接收到django传过来的数据data,循环data,将数据在html上展示
{% for item in data %}
<tr>
<td>{{ item.user }}</td>
<td>{{ item.pass }}</td> </tr>
{% endfor %}
</table> <script src="/qianzhui/jquery-1.12.4.js"></script> <script>
<!--alert('');--> </script>
</body>
</html>

views.py

from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here. USER_INPUT=[
{'user':'user1','pass':'pass1'},
{'user':'user2','pass':'pass2'}
] def index(request):
if(request.method == "POST"):
#如果request.POST.get()里面的参数没有对应值,会报错,所以这里指定了一个None,如果没有就返回None,确保不会报错。
user = request.POST.get('username',None)
password = request.POST.get('password',None)
temp = {'user':user,'pass':password}
USER_INPUT.append(temp)
#return HttpResponse('123')
return render(request,'index.html',{'data':USER_INPUT})

settings.py

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#下面这一行必须暂时注释,不然django会报错,暂时不知道什么意思。
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

上面html表格里的数据是存储在内存里的,重启页面就会消失,如果想让数据永久保存,就需要将数据写入数据库,往下看。

6. 数据保存到sqlite

cmdb→models.py,

#创建类就等于是建表了;类必须继承models.Model
class UserInfo(models.Model):
user = models.CharField(max_length=32)
passwd = models.CharField(max_length=32)

mysite→settings.py,

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#注册APP
'cmdb',
]

创建表,

python manage.py makemigrations
python manage.py migrate

views.py,

from django.shortcuts import render
from django.shortcuts import HttpResponse
#导入models
from cmdb import models
# Create your views here. def index(request):
if(request.method == "POST"):
u = request.POST.get('username',None)
p = request.POST.get('password',None) #执行了这行代码,数据库里就有数据了。
models.UserInfo.objects.create(user=u,passwd=p)
#return HttpResponse('123')
#取出数据
data_list = models.UserInfo.objects.all()
return render(request,'index.html',{'data':data_list})

index.html,

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>123</title>
</head>
<body>
<h1>123,test.</h1> <form action="/index/" method="POST">
<input type="text" name="username" />
<input type="password" name="password" />
<!--input type="email" name="email" /-->
<input type="submit" /> </form> <h1>DATA:</h1>
<table border="">
<tr>
<th>
yonghuming
</th>
<th>
mima
</th> </tr>
{% for item in data %}
<tr>
<td>{{ item.user }}</td>
<td>{{ item.passwd }}</td> </tr>
{% endfor %}
</table> <script src="/qianzhui/jquery-1.12.4.js"></script> <script>
<!--alert('');--> </script>
</body>
</html>

如此,数据就存储到django的默认数据库sqlite里了,重启django或者浏览器,html里的数据依然存在。

Django01的更多相关文章

  1. Django-01

    知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web框架? 框架,即framework,特指为 ...

  2. Django01 web http 基础

    一.内容回顾 1.python基础 2.网络编程 3.并发编程 4.前端 5.数据库(MySQL) 二.今日概要 1.了解Web应用程序的本质 2.Django简介及安装使用 三.今日详细 1.最简单 ...

  3. Python-Django进阶

    1. 路由系统 浏览器会自动给url后加一个"/" django会自动给路由的正则表达式前面加一个"/" django会给任何不带"/"结尾 ...

  4. python:前端(HTML)+后端(Django)+数据库(MySQL)

    1.创建一个html文件用于简单的网页注册demo <!DOCTYPE html> <html lang="en"> <head> <me ...

  5. 饮冰三年-人工智能-Python-22 Python初识Django

    1:一个简单的web框架 # 导包 from wsgiref.simple_server import make_server #自定义个处理函数 def application(environ,st ...

  6. django 基础框架学习 (一)

    Django-01 Web框架 1.Web应⽤程序处理流程  : 2.Web框架的意义            1.⽤于搭建Web应⽤程序            2.免去不同Web应⽤相同代码部分的重复 ...

  7. 1.1Django简介和虚拟环境配置

    MVC 大部分开发语言中都有MVC框架 MVC框架的核心思想是:解耦 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用 m表示model,主要用于对数据库层的封装 v表示 ...

  8. 前端(HTML)+后端(Django)+数据库(MySQL):用户注册及登录演示

    1.创建一个html文件用于简单的网页注册demo <!DOCTYPE html> <html lang="en"> <head> <me ...

  9. Liunx之django项目部署

    一.python web 项目部署 python django默认启动python3 manage.py runserver 0.0.0.0:8000这种方式调用wsgiref单机模块,性能较低,生产 ...

随机推荐

  1. android自动获取短信验证码

    前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码.主要就是实时获取短信信息.android上获 ...

  2. 20169212《Linux内核原理与分析》课程总结

    20169212<Linux内核原理与分析>课程总结 每周作业链接汇总 第一周作业:完成linux基础入门实验,了解一些基础的命令操作. 第二周作业:学习MOOC课程--计算机是如何工作的 ...

  3. python之萌新入门的第一天

    新人的挑战一:配置环境变量及正确地使用工具. 配置环境好难,照着教程做很简单,但是确定环境配置成功好难. 一开始运行helloworld程序的文件时一直出现SyntaxError:invaild sy ...

  4. 个人介绍和Github使用流程

    我叫石莉静,来自网络工程143班,学号1413042067 我的兴趣爱好有看电影.动漫,听音乐,摄影,寻找美食等等. 个人编程能力:非常真诚的说,我的编程能力蛮差的,用C++写过一共写过...(很少很 ...

  5. js中正则表达式 ---- 现成

    1 . 校验密码强度 密码的强度必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间. ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2. 校验中 ...

  6. 最近在做外贸网站的时候,需要大量的字体来充实页面,就学习了怎么引用Google Fonts

    第一步,FQ进入谷歌官方字体网站:https://fonts.google.com  妥妥的. 第二步,点击你所选择字体演示块的右上角的加号,然后你所选择的字体会形成引用链接以及你所要写的css样式. ...

  7. Git 撤消

    现在添加一个新的文件 t.c, 写一行 int a; 用 git add . 添加跟踪,当前状态 $ git status On branch master Changes to be committ ...

  8. Java Mysql分页显示

    public class View { private int currentPage; private int pageSize; private int recordCount; public V ...

  9. (DFS、全排列)POJ-3187 Backward Digit Sums

    题目地址 简要题意: 输入两个数n和m,分别表示给你1--n这些整数,将他们按一定顺序摆成一行,按照杨辉三角的计算方式进行求和,求使他们求到最后时结果等于m的排列中字典序最小的一种. 思路分析: 不难 ...

  10. linux下错误的捕获:errno和strerror的使用

    经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因.这个时候使用 ...