DJango学习记录(1)

学习书籍:Web接口开发与自动化测试——虫师

Django学习记录

一.Django简介
二.安装Django
1.环境

python3.6+windows7

2.安装步骤

pip install django==1.10.3

3.验证安装

django-admin

三.创建项目
1.使用startproject命令创建guest项目

django-admin startproject guest

会在当前目录下生成guest文件夹,目录结构如下:

|-- guest
| |-- settings.py——Django项目的配置文件,包括应用、数据库、模版配置等
| |-- urls.py——Django项目的URL声明
| |-- wsgi.py——与WSGI兼容的Web服务器为你的项目提供服务的入口点
| |-- __init__.py——用它标识一个目录为Python的标准包
|-- manage.py——命令行工具,可以在cmd窗口使用命令和Django进行交互

2.使用startapp命令创建sign项目

python3 manage.py startapp sign

会在当前目录下生成sign文件夹,目录结构如下:

|-- admin.py——映射models中的数据到Django自带的admin后台
|-- apps.py——用于应用程序的配置,在新的Django版本中新增文件
|-- migrations——用于记录models中数据的变更
| |-- __init__.py
|-- models.py——Django的模型文件,创建应用程序数据表模型
|-- tests.py——创建Django测试用例
|-- views.py——Django的视图文件
|-- __init__.py

3.使用runserver命令运行sign项目

python3 manage.py runserver 127.0.0.1:端口

python3 manage.py runserver

不填写端口默认使用8000端口

可以看到下方提示,点击网址可以打开网页。

Starting development server at http://127.0.0.1:8000/

打开网址看到以下界面就是正常的:

四.Hello World
1.展示字符串Hello World

(1)配置guest/settings.py,加入sign应用。

(2)在../guest/urls.py文件,添加/index/的路由配置

(3)在../sign/views.py文件,创建index函数

(4)进入http://127.0.0.1:8000/index/,可以看到

2.展示网页Hello World

(1)在sign/目录下创建templates/index.html文件

*Django默认查找templates/目录下的HTML文件

代码如下:

<html>
  <head>
      <title>Django Page</title>
  </head>
  <body>
    <h1>Hello World</h1>
  </body>
</html>

(2)修改views.py中的index函数

通过使用Django的render函数,返回index.html页面

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
    #return HttpResponse("Hello World")
    return render(request, "index.html")

(3)进入http://127.0.0.1:8000/index/,可以看到

和第一步骤不同的是,这个步骤展示的是html文件。

3.小结

通过前面两个步骤,可以了解到Django的基本处理流程(数据层暂时忽略)

为了可以在浏览器中输入http://127.0.0.1:8000/index/,访问我们想要的页面

(1)先在urls.py文件加入/index/路由,保证我们输入http://127.0.0.1:8000/index/地址后可以正常跳转,并后台访问views.index函数

url(r'^index/$', views.index)

(2)所以我们需要去views文件创建index函数,在index函数中,我们设置了请求index函数时,就返回index.html网页文件

def index(request):
    return render(request, "index.html")

(3)所以我们还需要创建index.html,这就是浏览器最终展示的结果五、

五、SQLite3

Django默认设置了SQLite3数据库,可先使用SQLite3做练习

使用migrate命令进行数据迁移

python3 manage.py migrate

数据迁移成功后在当前目录生成db.sqlite3数据库文件

六、Django 认证系统

进行数据迁移后,Django同时也生成了auth_user表,该表中存放的用户信息可以用来登录Django自带的Admin管理后台。

(1)使用createsuperuser命令生成超级管理员账号:adminadmin123456

python3 manage.py createsuperuser

(2)使用超管账号登录Admin管理后台:http://127.0.0.1:8000/admin/

七.登录功能
1.登录功能

(1)修改前端页面——index.html

<html>
  <head>
    <title>Django Page</title>
  </head>
  <body>
    <h1>登录中心</h1>
    <form method="post" action="/login_action/>  //提交表单后跳转到/login_action/
      <input name="uesrname" type="text" placeholder="username"><br>
      <input name="password" type="password" placeholder="password"><br>
      <button id="btn" type="submit">登录</button>
      {% csrf_token %}  添加CSRF令牌
    </form>
  </body>
</html>

(2)在url.py添加路由/login_action/

urlpatterns = [
	....
    url(r'^action/$', views.login_action),
]

(3)在view.py添加login_action函数

  • 输入账号或密码为空时,提示账号或密码不允许为空!
  • 输入账号密码和Django系统中的账号密码不一致时,返回账号或密码错误!
  • 输入正确账号时,跳转到/home/网址
def login_action(request):
    if request.method == 'POST':
        username = request.POST.get("username", "")
        password = request.POST.get("password", "")
        if username is "" or password is "":
            return render(request, "index.html", {"error": "账号或密码不允许为空!"})
        else:
            user = auth.authenticate(username=username, password=password)
            if user is not None:
                print(user)
                auth.login(request, user)
                request.session['user'] = username
                response = HttpResponseRedirect("/home/")
                return response
            else:
                return render(request, "index.html", {"error": "账号或密码错误!"})

(4)在url.py添加home路由

urlpatterns = [
	.......
    url(r'^home/$', views.home),
]

(5)在view.py添加home函数

def home(request):
    username = request.session.get("user", "")
    return render(request, "home.html", {"user": username})

(6)创建home.html文件

<html>
  <head>
      <title>Django Page</title>
  </head>
  <body>
    <h1>Hello Home</h1>
  </body>
</html>

这样子,输入正确密码和账号后就会跳转到home界面。

原文地址:https://www.cnblogs.com/loveniko/p/14000058.html