码迷,mamicode.com
首页 > 其他好文 > 详细

Django之前戏

时间:2019-06-05 21:41:14      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:enc   链接   标准   break   tcp   else   direct   pymysql   而不是   

web应用程序

Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件

应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。

基于socket写一个简单web应用

import socket
server = socket.socket()  # 不传参数默认就是TCP协议
server.bind((127.0.0.1,8080))
server.listen(5)

while True:
    conn, addr = server.accept()  # 阻塞 等待客户端链接
    data = conn.recv(1024)
    conn.send(bHTTP/1.1 200 OK\r\n\r\n)
    print(data)
    # 手动处理http数据获取用户访问的路径
    current_path = data.decode(utf-8).split(\r\n)[0].split( )[1]
    if current_path == /index:
        # 路由匹配上之后返回index
         conn.send(bindex)
    else:
        # 当匹配不上的时候统一返回404
        conn.send(b404)

    conn.close()

基于wsgire写的web应用

基于wsgire的应用.py

from wsgiref.simple_server import  make_server
from urls import *
def run(env,response):
    print(env)
    response(200 OK,[(username,jason),(password,123)])
    current_path =env.get(PATH_INFO)
    func = None
    for url_map in urls:
        if current_path==url_map[0]:
            func = url_map[1]
            break
    if func:
        res =func(env)
    else:
        res =error(env)
    return [res.encode(utf-8)]
if __name__ == __main__:

    server =make_server(127.0.0.1,8080,run)
    server.serve_forever()

 

urls.py

from views import *

urls=[
    (‘/index‘,index),
    (‘/login‘,login),
    (‘/reg‘,reg),
    (‘get_time‘,get_time),
    (‘/get_user‘,get_user),
    (‘/get_db‘,get_db)
]

  

views.py

import time
from jinja2 import Template
import pymysql

def index(env):
    return index

def login(env):
    return login

def reg(env):
    return reg

def get_time(env):
    current_time = time.strftime(%Y-%m-%d %X)
    return current_time

def get_user(env):
    with open(rtemplates/get_user.html,r,encoding=utf-8) as f:
        data = f.read()
    tmp = Template(data)
    return tmp.render(user_dic={name:jason,"password":qwer})
def get_db(env):
    conn = pymysql.connect(
        host =127.0.0.1,
        port =3306,
        user = root,
        password =123,
        database =day54,
        charset =utf8,
        autocommit =True
    )
    cursor = conn.cursor(pymysql.cursors.DictCursor)
    cursor.execute(select * from userinfo)
    user_dict = cursor.fetchall()
    with open(rtemlates/get_db.html,r,encoding=utf-8) as f:
        data =f.read()
    tmp = Template(data)
    return tmp.render(user_dict=user_dict)
def error(env):
    return 404 error

下载安装django

 

djang下载
推荐下载1.11.11版本
1.命令行直接下载
pip3 install django==1.11.11
2.pycharm下载

验证是否下载成功
django-admin

 

创建项目

注意事项:
1.计算机的名称不能有中文
2.一个pycharm窗口就是一个项目,不要多个项目放在一个窗口里面
3.项目名不能起中文

4.用django一定要保证只有一个在运行状态 切记切记!!!!!!!

5.一定记得清浏览器的缓存


创建django项目的方式
方式1(命令行创建):
创建django项目
django-admin startproject 项目名
创建app应用
python3 manage.py startapp app01
启动django项目
python3 manage.py runserver
ps:用命令行创建django默认不会自动创建templates文件夹
需要你手动自己创建(注意改文件夹路径是否被添加配置文件中)


方式2(pycharm创建)
FILE >>> new project 选择第二个django 需要注意名字不能有中文,选择本地的解释器,勾选后台管理
创建app
pycharm命令行创建
python3 manage.py startapp app01
Tools下面run manage task功能栏
启动点小绿色箭头

 

在app01中的views.py:

def index(request):
    return HttpResponse(index)
def reg(request):
    user_dict={name:jason,password:123}
    return render(request,reg.html,{userdict:user_dict})
def login(request):
    return redirect(http://www.xiaohuar.com)

在项目名下的url.py:

from app01 import  views
urlpatterns = [
    url(r^admin/, admin.site.urls),
    url(r^index/,views.index),
    url(r^reg/,views.reg),
    url(r^login/,views.login),
]

在templates中创建reg.html

from app01 import  views
urlpatterns = [
    url(r‘^admin/‘, admin.site.urls),
    url(r‘^index/‘,views.index),
    url(r‘^reg/‘,views.reg),
    url(r‘^login/‘,views.login),
]

HttpResponse(index)

内部传入一个字符串参数,返回给浏览器。

render(reg)

除request参数外还接受一个待渲染的模板文件和一个保存具体数据的字典参数。

将数据填充进模板文件,最后把结果返回给浏览器

redirect(login)

接受一个URL参数,表示跳转到指定的URL

 

Django之前戏

标签:enc   链接   标准   break   tcp   else   direct   pymysql   而不是   

原文地址:https://www.cnblogs.com/guanlei/p/10981979.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!