大家好,本文将围绕python仿站软件官网展开说明,python 仿真模型库是一个很多人都想弄明白的事情,想搞清楚python模仿浏览器需要先了解以下几个事情。
Source code download: 本文相关源码
1. http://fztool.ptcms.com/ 仿站工具,先克隆一波,选项默认,html名字自定义,保存解压
2.创建django项目,ide左上角(file-newproject)
跟项目下创建static文件夹将克隆所有文件类目放入,html类目放入templates ,创建项目app,
python manage.py startapp +项目app名称
3.在项目的urls里边引入from django.conf.urls import include (作用导入app里边的urls)
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
#导入模块
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('ceshi.urls'))
] #总的url,将app里边的urls汇聚到这儿,include('ceshi.urls')
#include里边写app的urls
4.在app里边的urls里边
from django.conf.urls import url
from django.urls import path #导入路径模块
from .views import * #导入views里边所有
urlpatterns = [
path('index/' ,index,name='index')
#绑定路由格式就是path('导航地址关键字可自定义/', views函数 )
# name='xx' 可加可不加,加name的作用即使参数一改变也可正确路由
]
5.app views 里边
from django.shortcuts import render
# Create your views here.
def index(request):
#自定义的views函数
return render(request,"index.html")
6,启动项目
7.配置静态文件,去settings里边最下边默认会有STATIC_URL = '/static/',自己另外再添加STATICFILES_DIRS
STATIC_URL = '/static/'
# 配置静态文件目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
8.更改html页面,记得更改html页面里边的编码格式 charset=utf-8
.
9.待页面全部更改完成后刷新浏览器,若不能访问注意检查编码格式以及其他配置,也可重启运行项目再次访问
如果页面出现部分丢失不全的情况,自行手动去克隆的网站页面下载图片手动导入static相应的文件夹和对应路径
10.克隆了多个页面,待上一步页面修改完成之后,继续回到views和app/urls.py下进行路由和视图绑定.完成后启动项目
然后就可以再浏览器中查看页面
from django.conf.urls import url
from django.urls import path #导入路径模块
from .views import * #导入views里边所有
urlpatterns = [
path('index/' ,index,name='index'),
#绑定路由格式就是path('导航地址关键字可自定义/', views函数 )
# name='xx' 可加可不加,加name的作用即使参数一改变也可正确路由
path('ours/' ,ours,name='ours'),
path('zulin/' ,zulin,name='zulin')
]
from django.shortcuts import render
# Create your views here.
def index(request):
#自定义的views函数
return render(request,"index.html")
def ours(request):
return render(request,"ours.html")
def zulin(request):
return render(request,"zulin.html")
11.完成了前面页面的展示,到后台看下怎么操作
项目settings里边LANGUAGE_CODE = 'en-us'改为 'zh-hans' ##将后台改为中文显示
settings里边INSTALLED_APPS里边添加 项目app名称用""包裹.一定需要添加否则app数据不能写入进去
python manage.py makemigrations 查看可迁移文件
python manage.py migrate 迁移文件,同时数据库可用
python manage.py createsuperuser 创建后台账户
python manage.py makemigrations 查看可迁移文件
python manage.py migrate 迁移文件,同时数据库可用
python manage.py createsuperuser 创建后台的管理员账户
12.接下来模板继承,网页之间有多个重复的部分,比如头部标题以及底部标识等等重复性的页面这时候就可以使用模板继承
以减少重复代码的书写量
具体操作,可以在templates文件夹下边新建一个公共部分为为内容的html页面这里以base.html为例,将几个具有重复代码的页面中
的部分(代码块)整个的复制粘贴到base.html,头部依旧需要{% load static %}来静态加载,要继承的页面头部依旧添加两部分内容{% extends 'base.html' %} {% load static %}引入base.html部分,
根据习惯,模板继承自己写的时候分了两中
1.需要继承的部分非连在一起,页面上下部分一致,需要更改中间的内容,那么直接在base.html里边依次写入
重复的头部内容-
{% block content%}
xx
{% endblock %}
重复的尾部内容,
然后在index.html继承的页面里边写入
{% block content %}
中间写入有差异要插入的内容代码
{% endblock %}
2.继承的内容部分是单独的一部分,比如页面上下不一致,中间部分一致,可以吧中间一致内容的部分单独写入一个html插入
即可以直接用{% block content%}xx{% endblock %} 将重复的内容进行包裹然后插入至index页面的{% block content%}xx{% endblock %}
13.接下来应该是后台管理界面了,就是自定义的后台管理表格,自定义每个可以自己添加的属性部分,
下边是model.py里边的内容
from django.db import models
# Create your models here.
# 轮播图数据模型
class Banner(models.Model):
title = models.CharField(max_length=20,verbose_name="轮播图标题")
# CharField字符串类型,max_length 字符长度, verbose_name后台显示的中文名称
href = models.CharField(max_length=150, verbose_name="广告链接")
src = models.ImageField(upload_to='imgs/banner/',verbose_name="图片")
#ImageField 专门处理图片类型,将图片上传到服务器上,保存至服务器路径,并非
# 存储在数据库, upload_to='imgs/banner/' 就是指定图片的上传存储路径
# 使用图片这个可能需要安装pip install Pillow
# 目录不存在会自动创建 IntegerField整数类型
position = models.IntegerField(verbose_name="顺序")
class Meta:
# db_table 指定数据表的名称
db_table = "banner"
verbose_name = '轮播图' #后台站点管理显示的标题
verbose_name_plural = verbose_name #不写这个站点名称后边后边会加s(复数),
def __str__(self):
# 自定义类加载对象
return self.title #当类函数加载的时候返回显示title..
admin.py 记得一定要写注册不然是没有办法看到后台上边写的东西的
还有setings里边app那儿一定要去注册项目app,每次修改模型要执行数据迁移..
from django.contrib import admin
from .models import * #记得要导入models...
# Register your models here.
class BannerAdmin(admin.ModelAdmin): # +1
# 后台列表页展示的字段,...
list_display = ['title', 'position', 'src', 'href']
admin.site.register(Banner, BannerAdmin) #+1
现在打开后台的管理界面登陆之后就会发现设置好的标签内容等等
选择添加的组件功能
search_fields = ["title"] #后台允许搜索的字段(添加一个搜索功能) list_filter = ["position"] #后台过滤器
14.自己尝试手动从后台添加一个图片,登陆后台之后自定义的地方点进去添加
""重点 ..自己上传的图片一般称之为媒体文件,需要自己手动写一个媒体文件路由找到该图片,否则点进去是无法加载到图片的
所以需要在settings里边配置媒体文件路由
# 配置媒体文件路由
MEDIA_URL = '/media/'
# 配置媒体文件目录,在这里指定了放在(新建)media文件夹内
# 而models里边upload_to也指定了存放的路径
# 所以整个完成的路径是根目录下的media,upload_to在media文件夹内
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
然后就可以手动上传路由了
依旧重点,需要去配置urls,因为media那个没有url怎么能访问到呢!
django里边提供了一个内置的返回文件处理函数
在项目url里边添加函数
from django.views.static import serve # serve 函数 处理返回文件的函数 from ceshi0109 import settings #导入settings设置文件
path('media/<path:path>', serve,{'document_root':settings.MEDIA_ROOT}) # 媒体文件资源路由,serve匹配规则 path里边media函数里边跟一个path路径参数 # edia/<path:path > 第一个path表示匹配的是一个路径,相对还有int(数组),str(字符串类型) # 第二个path指的是参数名,然后执行serve函数,然后固定的跟一个document_root字典对应settings配置文件
from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from django.views.static import serve
# serve 函数 处理返回文件的函数
from ceshi0109 import settings #导入settings设置文件
#导入模块
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('ceshi.urls')),
path('media/<path:path>', serve,{'document_root':settings.MEDIA_ROOT})
# 媒体文件资源路由,serve匹配规则 path里边media函数里边跟一个path路径参数
# edia/<path:path > 第一个path表示匹配的是一个路径,相对还有int(数组),str(字符串类型)
# 第二个path指的是参数名,然后执行serve函数,然后固定的跟一个document_root字典对应settings配置文件
] #总的url,将app里边的urls汇聚到这儿,include('ceshi.urls')
#include里边写app的urls
15.铺垫完成后,主要要做的功能来了
既然在后台上传文件,那么目的就是为了直接在后台去管理修改前端显示页面的内容
当在后台上传了文件之后,相应的修改views以在数据库内查询输出数据
首先导入models.py..内容如下
from django.shortcuts import render
from .models import Banner #导入模型函数
# Create your views here.
def index(request):
#自定义的views函数
#查询数据库所有数据,按照models里边的position 排序
banners = Banner.objects.all().order_by('position')
data = { #组装传递到模板中的数据data
'banners':banners
}
return render(request,"index.html",data)
之后找到相应的上传至那部分的.html页面,里边找到相对应的代码```````````````````