栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django学习

Django学习

Djanago项目搭建

1.典型几个命令–>跟scrapy框架的使用差不多
#1.创建WEB服务器
django-admin startproject guest
#2.进入到这个项目中去-->创建app应用
python manage.py startapp sign #创建app应用
#运行项目 
python3 manage.py runserver
2.Django的app模块目录结构

3.Django视图 1.)路由映射
①from django.urls import path   # 导入path函数
from django.urls import re_path #导入re_path函数
from django.urls import include  # 导入include函数
#三个导入内容的区别
#第一个是path直接匹配的 第二个支持正则匹配 第三个是进行包含文件使用的  典型配置包含sign app的一个目录 然后进行组合引用目录
如
from django.conf.urls import url, include

urlpatterns=[

re.path(r'^api/',include('sign.urls',name="sign")),#即包含一个一级目录
]

#二级目录的创建

from django.conf.urls  improt url
from sign import views_if

urlpattern=[
re_path(r'^get_book',views.getbook,name="sign")
]

#最终的路径/api/get_book


两种views显示内容的方式

1.利用from django.http import HttpResponse的形式去显示内容
	#s="Hello  World"
    #return HttpResponse(s)
2.利用模板渲染的形式去显示内容
from django.shortcuts  import render
    return render(request,"index.html")

2.)登录功能实现
①方法使用-->get方法和post方法,调用行动的-->form标签 html设置
②标签使用 {% csrf_token %} 常量使用 {{error}}#变量值来自于views.py文件去 ③cookie和session的使用 #设置的 response.set_cookie('user',username,3600)#获取cookie request.session['user']=username #获取cookie和session reqeust.cookieS.get('user','') reqeust.seesion.get('user','')#-->获取session代 注意点 如果是使用session的话 需要设置同步数据库 常用sqlites python3 manage.py migrate ④设置重定向页面的 #from django.http import HttpResponse,HttpResponseRedirect #导入包 HttpResponseRedirect('/envent_manage')
3.)Django自带认证系统
#1.创建管理员账户
python3 manage.py createsuperuser

#2.认证登录(根据authenticate判断认证)
user=auth.authenticate(username=username,password=password)
if user is not None:
  auth.login(request,user)#登录
#防止未经授权访问,在def 功能前面加@login_required 就可以判断是否登录
url(r'^accounts/login/$',views.index)
#-->即在登录页面默认跳转到登录的页面
4.Django模型 1).创建一个模型-->(含义一般一个模型可以理解为一个数据库的表)
from django.db.models.Model

class Event(models.Model):
      name=models.CharField(max_length=100)
      creat_time=model.DateTimeField(auto_now=True)#这个自动获取时间代
def __str__(self):
      return self.name
2.)admin 后台管理的模块处理
#在admin中显示一个模块方法
class EventAdmin(admin.ModelAdmin):
      list_display=['name','status','start_time','id']#展示的内容设置
      search_fields=['name']#搜索栏设置
      list_filter=['status']#设置过滤器

admin.site.register(Event)
3.)数据操作处理
#增
方法1
e1=Envet(name='测试')
e1.save()
方法2
Event.objects.create(name='测试')
#删
g=Guset.object.get(phone='13612121121')
g2.delete()
#改
g2.name='测试2'
g2.uptade()
#查
table.object.get()#返回一条获取的结果
table.object.all()#获取所有返回的结果
table.object.filter()#返回一个对象列表

#组合使用方法

即在views.py文件获取数据然后进行输出到文件中去
def event_manage(request):
    username=request.session.get('user','')
    return render(request,"envent_manage.html",{"user":username})#即一样的道理在render模板渲染的时候给渲染的数据进行传递数据就好了
    
5.Django模板 1).结合bootsrap
{% load bootstrap3 %}
{% bootstrap_css %}
{% bootstrap_javascript %}
{% for envent in envets %}#批量循环获取数据的处理
2.)结合分页器使用
>>> from django.core.paginator import Paginator#导入Paginator模块
>>> list1=[i for i in range(0,150)]#使用列表生成器生成一个包含150个数字的列表
>>> page1=Paginator(list1,10)#生成一个Paginator对象
>>> print(page1.count)#打印总的记录数,即列表list1的长度
150
>>> print(page1.num_pages)#打印总的页数,即总记录数除以每页显示的条目数
15
>>> print(page1.page_range)#页数的列表
range(1, 16)
>>> print(page1.page(1))#打印第一页的page对象

>>> page1.page(1).object_list#打印第一页的所有记录
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> page1.page(2).object_list#打印第二页的所有记录
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> page1.page(2).next_page_number()#打印当前的页(第2页)的下一页的页码
3
>>> page1.page(2).has_next()#第2页是否有下一页
True
>>> page1.page(2).has_previous()#第2页是否有上一页
True
>>> page1.page(2).has_other_pages()#第2是否有其他页
True
>>> page1.page(2).start_index()#第2页第一条记录的序号
11
>>> page1.page(2).end_index()#第2页最后一条记录的序号
20
>>> page1.page(0)#第0页是否有记录,会报错
Traceback (most recent call last):
  File "", line 1, in 
    ...
    raise EmptyPage(_('That page number is less than 1'))
django.core.paginator.EmptyPage: 
>>> page1.page(15)#打印第15页的对象

典型分页器使用案例

6.mysql服务器搭建

mysql搭建服务器的几个坑

坑①
注意mysql版本的问题
如果版本有问题会出现mysql服务
这种情况
本地计算机上的mysql服务器启动后停止
坑②
对于安装mysql文件一点要在mysql安装目录下的bin进行安装
坑③
对于data目录下的是保存日志登录这些的
坑④路径必须带上双引号-->我是这么解决的 完美解决问题

修改数据库连接密码

set password for username @localhost = password(newpwd);

导入数据
导入excel数据思路
导入.sql格式数据方法

7.项目部署

django项目部署方案
mysql服务器安装包下载
问题1的情况以及成功解决问题的安装方法
错误评论区典型的几种情况

根据小明师傅的项目rdadme直接进行搭建

注意事项

①在导入数据库时可能会遇到mysql服务器版本不兼容的情况
https://blog.csdn.net/westworld2017163com/article/details/83150628
解决方法
将编码改为这个
utf8mb4_general_ci
②
数据库表设置格式要设置为utf-8
否则会爆错
设置方法
https://blog.csdn.net/L4WDgosh/article/details/118280140

导入就不说了
这里进行导入就好了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331319.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号