Django的基础学习(上)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Django的基础学习

搭建Django框架


1 基本搭建

1 创建一个文件夹
  mkdir mytest
2 在文件夹里面创建一个项目
  Django-admin startproject mysite
3 在里面创建一个应用 
  python3.6 manage.py startapp myweb

2 执行数据库连接配置

1 编辑init文件,添加Pymysql的数据库
    import pymysql
    pymysql.install_as_MySQLdb()
2 进入setting配置文件,进行修改
  INSTALLED_APPS = [
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'mytest',    #写上创建的应用名
]
  DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.mysql',
          'NAME': 'mydb',   #写上库名
          'USER': 'root',
          'PASSWORD': '123456',
          'HOST': 'localhost',
          'PORT': '3306',
}
  #此处添加自己的IP地址
    ALLOWED_HOSTS = ['192.168.2.240']

3 配置路由

1 配置主路由(第一层路径正则筛选)
  from django.conf.urls import include,url
  from django.contrib import admin
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^mytest/', include('mytest.urls')),
    ]
2 配置应用路由(第二层路径筛选)(必须要有相对应的视图)
  from django.conf.urls import url
  from . import views
    urlpatterns = [
        url(r'^$', views.index, name="index"),
    ]

4 编写相对应的视图

写相对于应用路由的视图
from django.shortcuts import render
from django.http import HttpResponse
from mytest.models import Users
def index(request):      ###命名一定是路由的命名
    try:
        s = Users.objects.get(id=1)
        return HttpResponse(s)
    except:
        return HttpResponse("没有找到对应的信息!")

5 测试


python3.6 manage.py sunserver 0:8000


数据库的增删改查

1 视图

视图的填写
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.shortcuts import redirect
from mytest.models import Users
def index(request):
    try:
        list = Users.objects.filter(id__in=[1,3,5])
        s = ','.join([vo.name for vo in list])
        #修改(将id值为5的age值改为30)
        #ob = Users.objects.get(id=5)
        #ob.age = 30
        #ob.save()
        #删除(删除id为3的信息)  
        #ob = Users.objects.get(id=3)
        #ob.delete()
        return HttpResponse(s)
    except:
        return HttpResponse("没有找到对应的信息!")
# 浏览用户信息        
def indexUsers(request):
    # 执行数据查询,并放置到模板中
    list = Users.objects.all()
    context = {"stulist":list}
    return render(request,"mytest/users/index.html",context)
# 加载添加信息表单
def addUsers(request):  
    return render(request,"mytest/users/add.html")
# 执行信息添加操作
def insertUsers(request): 
    try:
        ob = Users()
        ob.name = request.POST['name']
        ob.age = request.POST['age']
        ob.phone = request.POST['phone']
        ob.save()
        context = {'info':'添加成功!'}
    except:
        context = {'info':'添加失败!'}
    return render(request,"mytest/users/info.html",context)
# 执行信息删除操作    
def delUsers(request,uid):  
    try:
        ob = Users.objects.get(id=uid)
        ob.delete()
        #重定向到信息浏览页
        return HttpResponseRedirect(reverse("users"))
        #同上重定向跳转的简写 return redirect(reverse("users"))
    except:
        context = {'info':'删除失败!'}
        return render(request,"mytest/users/info.html",context)
# 加载信息编辑表单    
def editUsers(request,uid):  
    try:
        ob = Users.objects.get(id=uid)
        context = {'user':ob}
        return render(request,"mytest/users/edit.html",context)
    except:
        context = {'info':'没有找到要修改的信息!'}
        return render(request,"mytest/users/info.html",context)
# 执行信息编辑操作
def usersupdate(request,uid):
    try:
        ob = Users.objects.get(id=uid)
        ob.username = request.POST['username']
        ob.name = request.POST['name']
        ob.passwd = request.POST['passwd']
        ob.sex = request.POST['sex']
        ob.address = request.POST['address']
        ob.code = request.POST['code']
        ob.phone = request.POST['phone']
        ob.email = request.POST['email']
        ob.state = request.POST['state']
        ob.addtime = time.time()
        ob.save()
        context = {'info':'修改成功'}
    except:
        context = {'info':'修改失败'}
    return render(request,'myadmin/info.html',context)

2 html

主页

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>用户信息管理</title>
        <script>
            //自定义执行信息删除提示判断,参数uu是成功的删除url地址
            function doDel(uu){
                if(confirm("确定要删除吗?")){
                    //网页跳转
                    window.location=uu;
                }
            }
        </script>
    </head>
    <body>
        <center>
            {% include 'mytest/users/menu.html' %}
            <h3>浏览用户信息</h3>
            <table width="800" border="1">
                <tr>
                    <th>id号</th>
                    <th>姓名</th>
                    <th>年龄</th>
                    <th>电话</th>
                    <th>操作</th>
                </tr>
                {% for stu in stulist %}
                    <tr>
                        <td>{{ stu.id }}</td>
                        <td>{{ stu.name }}</td>
                        <td>{{ stu.age }}</td>
                        <td>{{ stu.phone }}</td>
                        <td>
                            <a href="{% url 'editusers' stu.id %}">编辑</a>
                            <a href="javascript:doDel('{% url 'delusers' stu.id %}');">删除</a>
                        </td>
                    </tr>
                {% endfor %}
            </table>
        </center>
    </body>
</html>

添加

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>用户信息管理</title>
    </head>
    <body>
        <center>
            {% include "mytest/users/menu.html" %}
            <h3>添加用户信息</h3>
            <form action="{% url 'insertusers' %}" method="post">
            {% csrf_token %}
            <table width="280" border="0">
               <tr>
                 <td>姓名:</td>
                 <td><input type="text" name="name"/></td>
               </tr>
               <tr>
                 <td>年龄:</td>
                 <td><input type="text" name="age"/></td>
               </tr>
               <tr>
                 <td>电话:</td>
                 <td><input type="text" name="phone"/></td>
               </tr>
               <tr>
                 <td colspan="2" align="center">
                    <input type="submit" value="添加"/>
                    <input type="reset" value="重置"/>
                 </td>
               </tr>
            </table>
            </form>
        </center>
    </body>
</html>

修改

{% extends "myadmin/base.html" %}
{%block block_name%}
<!-- 主体开始 -->
  <h1>
    Edit Your Profile
  </h1>
  <form id="edit-profile" class="form-horizontal" action="{% url 'myadmin_usersupdate' user.id %}" enctype="multipart/form-data" method="post">
  {% csrf_token %}
    <fieldset>
      <legend>编辑用户信息</legend>
      <div class="control-group">
        <label class="control-label" for="input01">username</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="input01" name='username' value='{{ user.username }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">name</label>
        <div class="controls">
          <input type="passwo" class="input-xlarge" id="input01" name='name' value='{{ user.name }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">passwd</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="input01" name='passwd' value='{{ user.passwd }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">sex</label>
        <div class="controls">
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name='sex' value="1" />男
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name='sex' value="0" />女
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">address</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="input01" name='address' value='{{ user.address }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">code</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="input01" name='code' value='{{ user.code }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">phone</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="input01" name='phone' value='{{ user.phone }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">email</label>
        <div class="controls">
          <input type="text" class="input-xlarge" id="input01" name='email' value='{{ user.email }}'/>
        </div>
      </div>
      <div class="control-group">
        <label class="control-label" for="input01">state</label>
        <div class="controls">
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="state" value="1" />启用
          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="state" value="2" />禁用
          &nbsp;&nbsp;&nbsp;&nbsp;
          <input type="radio" name="state" value="0" />后台管理员
        </div>
      </div>
      <!-- <div class="control-group">
        <label class="control-label" for="fileInput">Photo</label>
        <div class="controls">
          <input class="input-file" id="fileInput" type="file" />
        </div>
      </div>            
      <div class="control-group">
        <label class="control-label" for="textarea">Biography</label>
        <div class="controls">
          <textarea class="input-xlarge" id="textarea" rows="4">Web technology junkie who writes innovative and bestselling technical books. Also enjoys Sunday bicycle rides and all "good" comedy.</textarea>
        </div>
      </div> -->
      <div class="form-actions">
        <button type="submit" class="btn btn-primary">Save</button> <button class="btn">Cancel</button>
      </div>
    </fieldset>
  </form>
<!-- 主体结束 -->
{%endblock%}


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 缓存 数据库
Django框架学习(四)
Django框架学习(四)
|
前端开发 关系型数据库 MySQL
Django框架学习(三)
Django框架学习(三)
|
JSON 前端开发 数据库
Django框架学习(一)
Django框架学习(一)
|
4月前
|
编解码 前端开发 JavaScript
技术经验分享:Django学习日记
技术经验分享:Django学习日记
|
5月前
|
Python
Django 学习教程-介绍与安装
本章介绍了Django是什么,以及为什么使用Django和安装Django
62 1
Django 学习教程-介绍与安装
【Django学习】(十六)session_token认证过程与区别_响应定制
【Django学习】(十六)session_token认证过程与区别_响应定制
|
5月前
|
调度 Apache 数据库
Django 学习教程-第一个 Django 应用
本章主要讲述了如何创建一个Django项目,以一个投票案例程序介绍了Django的请求和响应流程。
74 1
|
11月前
|
前端开发 数据库 网络架构
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
Python Django框架中文教程:学习简单、灵活、高效的Web应用程序框架
|
存储 NoSQL 中间件
Django框架学习(二)
Django框架学习(二)
【Django学习】(十二)GenericAPIView_过滤_排序_分页(上)
【Django学习】(十二)GenericAPIView_过滤_排序_分页
【Django学习】(十二)GenericAPIView_过滤_排序_分页(上)