Django的初步部署

(1)首先下载django:

pip install django==2.0 https://pypi.douban.com/simple

如果出现红字报错,重新命令行如下:

直接pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn django==2.2
然后确认pip list

2.创建一个空文件夹然后命令行打开开始创建项目:

django-admin startproject start_item

3.创建网站文件

python manage.py startapp 网站名

       会有两个文件夹一个是项目名start_item,一个是search网站名,一个manage.py。其余文件是后期操作产生的。

4.配置名目setting.py文件

(1)配置参数

1.访问权限:允许其他计算机访问
ALLOWED_HOSTS=['*']
2.注册子应用:
把网站名添加到INSTALLED_APPS中
3.html文件存放文件夹的路径配置
首先在根目录(跟manage.py同级)创建templates文件夹
然后在参数TEMPLATES中的DIRS中配置[os.path.join(BASE_DIR),'templates'],
4.配置网站默认语言LANGUAGE_CODE='zh-hans'
5.配置时间TIME_ZONE='Asia/Shanghai'
6.把USE_TZ=False

 记得在根目录建立temeplates文件夹

 7.配置完启动 python manage.py runserver 0.0.0.0:8000

       1.在本机打开127.0.0.1:8000

       2.在非本机搜服务器ip,然后浏览器打开IP:8000

如下图:

实践1:reder返回字符串

        Djogo在网站文件夹下有个views.py文件,该文件是django核心文件,控制输出内容以及处理用户的交互逻辑

写入:

def index(request):
    return HttpResponse("Hello World") 

(2)在项目文件中找到urls.py,写入

from django.contrib import admin
from django.urls import path
from search.views import index
urlpatterns={
    path('admin/',admin.site.urls),
    path('',index,name='index'),
}

(3)cd到根目录,然后运行

python manage.py runserver 0.0.0.0:8000

 实践2:render返回html文件

1.在根目录创建一个templates文件夹(如果已经创建,并且在setting文件
中设置完毕后,那就不管)

在文件夹创建一个index.html文件

<h1>刘什么宏</h1>
<div>看一下,看一下</div>

2.在网站文件夹的views.py文件中写入

from django.shortcuts import render
def index_html(request):
    #index.html是你创建的html文件名字
    return render(request,'index.html')

3.在项目文件夹中的urls中导入

from django.shortcuts import render
def index_html(request):
    #这个是创建的网页文件
    return render(request,'index.html')

4.(3)在项目文件夹中urls中导入

#index_html中添加urls文件中模板
from search.views import index,index_html
urlpatterns={
   path('index_html/',index_html,name='index_html')
}

启动python manage.py runserver 0.0.0.0:8000
打开浏览器验证http://127.0.0.1:8000/index_html/

实践3:根据模板创建数据库里的表

        在项目文件夹中的setting.py中修改如下代码,并检查网站名是不是在INSTALLED_APPS 中:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'HOST':'localhost',
        'PORT':'3306',
    }
}

        在项目文件夹中的model.py文件中添加数据表模板如下:

from django.db import models
class Student(models.Model):
    name_text=models.CharField(max_length=20)
    height=models.DecimalField(max_digits=10,decimal_places=3)
    weight=models.DecimalField(max_digits=10,decimal_places=3)

        在manager.py同级目录开命令行输入如下代码:

(1)
# 创建表结构
python manage.py migrate
(2)
#让 Django 知道我们在我们的模型有一些变更
python manage.py makemigrations 网站名
#比如python manage.py makemigrations search
(3) # 创建表结构
python manage.py migrate 网站名
#python manage.py migrate TestModel  

命令行显示如下:

 

实践3:根据模板创建数据库里的表

在项目文件夹中的urls.py文件中加入:

from django.contrib import admin
from django.urls import path
from search.testd import testdb
urlpatterns = [
    #主要看这里
    path('dd/',testdb),
]

在网站文件夹新建一个py文件,添加自定义函数:

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from search.models import Student
# 数据库操作
def testdb(request):
    test1 = Student(name='runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")

网站文件夹中的model.py文件,已经创建了Student表格,如下:

from django.db import models

class Student(models.Model):
    name = models.CharField(max_length=20)

然后命令行上运行:python manage.py runserver 0.0.0.0:8000

 类似的增删改查全部都是类似。

testd.py

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from search.models import Student
 
# 数据库操作
def testdb(request):
    test1 = Student(name='runoob')
    test1.save()
    return HttpResponse("<p>数据添加成功!</p>")
def selectdb(request):
    response = ""
    response1 = ""
    # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
    list = Student.objects.all()
     # filter相当于SQL中的WHERE,可设置条件过滤结果
    response2 = Student.objects.filter(id=1) 
    # 获取单个对象
    response3 = Student.objects.get(id=1) 
    # 限制返回的数据 相当于 SQL 中的 OFFSET 0 LIMIT 2;
    Student.objects.order_by('name')[0:2]
    #数据排序
    Student.objects.order_by("id")
    # 上面的方法可以连锁使用
    Student.objects.filter(name="runoob").order_by("id")
    # 输出所有数据
    for var in list:
        response1 += var.name + " "
    response = response1
    return HttpResponse("<p>" + response + "</p>")
def updatadb(request):
    # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
    test1 = Student.objects.get(id=1)
    test1.name = 'Google'
    test1.save()
    # 另外一种方式
#    Test.objects.filter(id=1).update(name='Google')
    # 修改所有的列
    # Test.objects.all().update(name='Google')
    return HttpResponse("<p>修改成功</p>")
def deletedb(request):
    # 删除id=1的数据
    test1 = Student.objects.get(id=1)
    test1.delete()
    # 另外一种方式
    # Test.objects.filter(id=1).delete()
    # 删除所有数据
    # Test.objects.all().delete()
    
    return HttpResponse("<p>删除成功</p>")

urls.py代码如下:

from django.contrib import admin
from django.urls import path
from search.testd import testdb,selectdb,updatadb,deletedb
urlpatterns = [
    path('admin/', admin.site.urls),
    #path('',index,name='index'),
    #path('index_html/',index_html,name='index_html'),
    path('insert/',testdb),
    path('select/',selectdb),
    path('updata/',updatadb),
    path('delete/',deletedb),
]

 实践3:传递变量到前端

在views文件中添加如下代码:

from django.shortcuts import render
from django.http import HttpResponse
def index_html(request):
    dd="测试"
    return render(request,'index.html',{'emp':dd})

 在html文件中添加:

<h1>刘什么宏</h1>
<div>看一下,看一下{{ emp }}</div>

 在urls文件中添加:

from django.contrib import admin
from django.urls import path
from search.testd import testdb,selectdb,updatadb,deletedb,getDemo
from search.views import index_html
urlpatterns = [
    path('getDemo/',index_html),
]

 

实践4:get请求

        在testd.py文件中代码:

# -*- coding: utf-8 -*-
from django.http import HttpResponse
from search.models import Student
 
def getDemo(request):
    if request.method == "GET":
        print(request.GET)
        print(request.GET['a'])
        print(request.GET.getlist('a'))
        print(request.GET.get('c','no have c'))
    elif request.method == "POST":
        pass
    else:
        pass
    return HttpResponse("this is test_get_post")

        在urls.py文件中代码,加入路由:

from django.contrib import admin
from django.urls import path
from search.testd import testdb,selectdb,updatadb,deletedb,getDemo
from search.views import index_html
urlpatterns = [
    path('getDemo/',getDemo),
]

然后浏览器访问:http://127.0.0.1:8000/getDemo/?a=10&b=20

后台命令行如下图:

 收数据传到后台。

 实践4:post请求

        创建一个html文件,postdeml.html,输入:

<div>
<form method="post" action="/get_post/">
    姓名: <input type="text" name='uname'>
    <input type="submit" value="提交">
</form>
</div>

然后函数文件文件,views.py输入如下:

from django.shortcuts import render
from django.http import HttpResponse
def index_post(request):
    return render(request,'postdeml.html')
def get_post(request):
    if request.method == "GET":
        return HttpResponse(POST_FORM)
    elif request.method == "POST":
        print("uname is ",request.POST['uname'])
        return HttpResponse("POST is ok")
    else:
        pass

路由管理文件urls.py文件,输入如下:

from django.contrib import admin
from django.urls import path
from search.testd import testdb,selectdb,updatadb,deletedb,getDemo
from search.views import index_html,index_post,get_post
urlpatterns = [
    path('postHtml/',index_post),
    path('get_post/',get_post)
]

然后运行python manage.py runserver 0.0.0.0:8000

浏览器输入http://127.0.0.1:8000/postHtml/

然后输入文本按钮点一下

 

 可能会报错

 这里在setting.py文件中添加如下代码:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
#    'django.middleware.csrf.CsrfViewMiddleware',
]

把csrf验证禁掉,然后就可以浏览器访问成功

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值