大家好,我是天空之城,今天给大家带来小福利,django搭建个人网站的源码公开(一)
**django框架的原理:**它采用的是MVT架构,m就是model数据模型,就是数据的结构和字段,比如是个人博客数据,就需要定义title和content数据类型,其他的表格之类的也需要定义相应的数据类型;v就是views就是视图也就是控制中心,所有网页显示的内容都需要在这里用函数来定义,包括从数据库中调用数据;t就是template模块,就是你要展示的具体网页内容html语言和css语言,这就是大体的框架,另外还要放一些static静态文件,比如图片,js文件之类。
当你拿到一个django文件首先需要看一下数据库配置,你先启动mysql数据库并建立相应的数据库名称,再进行数据库文件的迁移

python manage.py makemigrations
python manage.py migrate创建网站后台用户名和密码
python manage.py createsuperuser

首先是项目目录截图

其次是视图views文件

这里每定义的一个函数就代表返回一个网页
from django.shortcuts import render# Create your views here.from django.http import HttpResponsedef zhuye(request):return HttpResponse("天空之城是帅哥")def indexfunc(request):return render(request,'myapp/index2.html')from .models import Students
def students(request):studentsList= Students.stuObj2.all()return render(request,'myapp/students.html',{'students':studentsList})from .models import Grades
def grades(request):gradesList=Grades.graObj2.all()return render(request,'myapp/grades.html',{'grades':gradesList})def addstudent(request):grade=Grades.graObj2.get(pk=1)stu=Students.createStudent("霍燕",18,True,"我叫霍燕",grade,"2020/07/20","2020/07/21")stu.save()return HttpResponse("我是钕")def addstudent2(request):grade=Grades.graObj2.get(pk=1)stu=Students.stuObj2.createStudent("黄奕",20,True,"我叫刘诗",grade,"2020/07/20","2020/07/21")stu.save()return HttpResponse("我是涩")def student3(request):studentsList=Students.stuObj2.all()[0:5]return render(request,'myapp/students.html',{'students':studentsList})def stupage(request,page):page=int(page)studentsList = Students.stuObj2.all()[(page-1)*5:page*5]return render(request, 'myapp/students.html', {'students': studentsList})from django.db.models import Max,Mindef studentsearch(request):# studentsList = Students. stu0bj2. filter(sname__ .contains= “孙")# studentsList = Students. stu0bj2. filter(sname_ startswith= "孙")# studentsList = Students. stuobj2. filter(pk_ in=[2, 4, 6, 8, 10])# studentsList = Students. stu0bj2. filter(sage_ gt=30)# studentsList = Students. stuobj2. filter(lastTime__ year=2017)studentsList = Students.stuObj2.filter(sname__contains="刘")maxAge=Students.stuObj2.aggregate(Max('sage'))print(maxAge)return render(request,'myApp/students.html',{'students': studentsList})from django.db.models import F,Qdef grades1(request):g=Grades.graObj2.filter(ggirlnum__gt=F('gboynum'))print(g)return HttpResponse("你牛")def get1(request):a=request.GET.get('a')b = request.GET['b']c = request.GET.get('c')return HttpResponse(a+" "+ b +" "+c)def get2(request):a = request.GET.getlist('a')a1=a[0]a2=a[1]c = request.GET.get('c')return HttpResponse(a1 + " " + a2 + " " + c)def showregist(request):return render(request, 'myapp/regist.html', )def regist(request):name = request.POST.get("name")gender = request.POST.get("gender")age = request.POST.get("age")hobby = request.POST.getlist("hobby")print(name)print(gender)print(age)print(hobby)return HttpResponse("regist")from django.http import HttpResponseRedirect
from django.shortcuts import redirect
def redirect1(request):# return HttpResponseRedirect('/redirect2')return redirect('/redirect2')
def redirect2(request):return HttpResponse("我是重定向后的视图")def main(request):# 取sessionusername = request.session.get('name', '游客')print(username)return render(request, 'myapp/main.html', {'username': username})def login(request):return render(request, 'myapp/login.html')def showmain(request):print("*****************")username = request.POST.get('username')# 存储sessionrequest.session['name'] = usernamereturn redirect('/main/')from django.contrib.auth import logout
def quit(request):# 清除sessionlogout(request) # 方法1,推荐# request.session.clear() # 方法2request.session.flush() # 方法3return redirect('/main/')from .models import Students
def index(request):#return HttpResponse("到底怎么回事")# return render(request, 'myapp/index.html')student=Students.stuObj2.get(pk=1)return render(request,'myapp/index.html',{"stu":student,"num":10,"str":"liushishi is a ","list":["liutao","sa","yes"]})# return render(request, 'myapp/index.html',{"code":"<h1>jack is a sexy man</h1>"})def students1(request):list=Students.stuObj2.all()return render(request,'myapp/students1.html',{"students":list})def good(request,id,pd):return render(request,'myapp/good.html',{"num":id,"num1":pd})def good1(request,id):return render(request,'myapp/good1.html',{"num":id})def main1(request):return render(request, 'myapp/main1.html')def detail(request):return render(request, 'myapp/detail.html')def verifycode(request):# 引入绘图模块from PIL import Image, ImageDraw, ImageFont# 引入随机函数模块import random# 定义变量,用于画面的背景色,宽,高bgcolor = (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))width = 100height = 50# 创建画面对象im = Image.new('RGB', (width, height), bgcolor)# 创建画面对象draw = ImageDraw.Draw(im)# 调用画笔的point()函数绘制噪点for i in range(0, 100):xy = (random.randrange(0, width), random.randrange(0, height))fill = (random.randrange(0, 255), 255, random.randrange(0, 255))draw.point(xy, fill=fill)# 定义验证码的备选值str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'# 随机选取4个值作为验证码rand_str = ''for i in range(0, 4):rand_str += str[random.randrange(0, len(str))]# 构造字体对象font = ImageFont.truetype(r'C:\Windows\Fonts\simfang.ttf', 40)# 构造字体颜色fontcolor1 = (255, random.randrange(0, 255), random.randrange(0, 255))fontcolor2 = (255, random.randrange(0, 255), random.randrange(0, 255))fontcolor3 = (255, random.randrange(0, 255), random.randrange(0, 255))fontcolor4 = (255, random.randrange(0, 255), random.randrange(0, 255))# 绘制4个字draw.text((5, 2), rand_str[0], font=font, fill=fontcolor1)draw.text((25, 2), rand_str[1], font=font, fill=fontcolor2)draw.text((50, 2), rand_str[2], font=font, fill=fontcolor3)draw.text((75, 2), rand_str[3], font=font, fill=fontcolor4)# 释放画笔del draw# 存入session,用于做进一步的验证request.session['verify'] = rand_str# 内存文件操作import iobuf = io.BytesIO()# 将图片保存在内存中,文件类型为pngim.save(buf, 'png')# 将内存中的图片数据返回给客户端,MIME类型为图片pngreturn HttpResponse(buf.getvalue(), 'image/png')from django.shortcuts import render, redirect
def verifycodefile(request):f = request.session.get("flag",True)str = ""if f == False:str = "请重新输入!"request.session.clear()return render(request, 'myapp/verifycodefile.html', {"flag":str})def verifycodecheck(request):code1 = request.POST.get("verifycode").upper()code2 = request.session["verify"].upper()if code1 == code2:return render(request, 'myapp/success.html')else:request.session["flag"] = Falsereturn redirect('/verifycodefile/')def upfile(request):return render(request, 'myapp/upfile.html')import os
from django.conf import settings
def savefile(request):if request.method == "POST":f = request.FILES["file"]# 文件在服务器端的路径filePath = os.path.join(settings.MEDIA_ROOT, f.name)with open(filePath, 'wb') as fp:for info in f.chunks():fp.write(info)return HttpResponse("上传成功。")else:return HttpResponse("上传失败。")from .models import Students
from django.core.paginator import Paginator
def studentpage(request, pageid):# 所有学生列表allList = Students.stuObj2.all()paginator = Paginator(allList, 3)page = paginator.page(pageid)# print(page)return render(request, 'myapp/studentpage.html', {"students": page})def ajaxstudents(request):return render(request, 'myapp/ajaxstudents.html')from django.http import JsonResponsedef studentsinfo(request):stus = Students.stuObj2.all()list = []for stu in stus:list.append([stu.sname, stu.sage])return JsonResponse({"data": list})def edit(request):return render(request, 'myapp/edit.html')from django.shortcuts import render, HttpResponse
from .models import Blogdef myblog(request):blogs = Blog.objects.all()return render(request, 'myapp/blog.html', context={'blogs': blogs})

然后是model数据模型文件

from django.db import models# Create your models here.from django.db import modelsclass GradesManager(models.Manager):def get_querset(self):return super(GradesManager,self).get_queryset().filter(isDelete=False)class Grades(models.Model):#graObj=models.Manager()graObj2=GradesManager()gname = models.CharField(max_length=20)gdate = models.DateTimeField()ggirlnum = models.IntegerField()gboynum = models.IntegerField()isDelete = models.BooleanField(default=False)def __str__(self):return self.gnameclass Meta:db_table='grades'class StudentsManager(models.Manager):def get_querset(self):return super(StudentsManager,self).get_queryset().filter(isDelete=False)def createStudent(self, name, age, gender, contend,grade, lastT, createT, isD=False):stu=self.model()# print(type(grade))stu.sname=namestu.sage=agestu.sgender=genderstu.scontend=contendstu.sgrade=gradestu.lastTime=lastTstu.createTime=createTreturn stuclass Students(models.Model):#stuObj=models.Manager()stuObj2=StudentsManager()sname = models.CharField(max_length=20)sgender = models.BooleanField(default=True)sage = models.IntegerField()scontend = models.CharField(max_length=20)lastTime = models.DateTimeField(auto_now=True)createTime = models.DateTimeField(auto_now_add=True)isDelete = models.BooleanField(default=False)sgrade = models.ForeignKey("Grades", on_delete=models.CASCADE, )def __str__(self):return self.snameclass Meta:db_table='students'ordering=["id"]@classmethoddef createStudent(cls, name, age, gender, contend,grade, lastT, createT, isD=False):stu = cls(sname=name,sage=age,sgender=gender,scontend=contend,sgrade=grade,lastTime=lastT,createTime=createT,isDelete=isD)return stufrom tinymce.models import HTMLField
class Text(models.Model):str = HTMLField()from django.db import models
from mdeditor.fields import MDTextField
class Blog(models.Model):title = models.CharField(max_length=100)content = MDTextField()# class TempTables(models.Model):
#     a=models.BooleanField(default=True)

然后是admin里面的文件,要注册你定义的类

from django.contrib import admin# Register your models here.
from .models import Text
admin.site.register(Text)from django.contrib import admin
from .models import Blog# Register your models here.@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):list_display = ['title','content']

接下来是项目下面的主目录project/urls路由文件,和app下面的app/urls路由文件,这个是控制你的网页URL地址的

"""project URL ConfigurationThe `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/3.0/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.conf.urls import url,include# urlpatterns = [
# #     path('admin/', admin.site.urls),
# #     path('^',include('myapp/urls'))
# # ]urlpatterns = [url(r'^admin/', admin.site.urls),url(r'^', include('myapp.urls',namespace='app')),]
===============================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2020/7/12 14:31
# @Author  : tiankongzhicheng
# @File    : urls.py
# @Software: PyCharmfrom django.conf.urls import url
from . import viewsapp_name='myapp'
urlpatterns=[url(r'^meinv$',views.indexfunc),url(r'^$',views.zhuye),url(r'^students/$',views.students),url(r'^grades/$',views.grades),url(r'^addstudent/$',views.addstudent),url(r'^addstudent2/$',views.addstudent2),url(r'^student3/$',views.student3),url(r'^stu/(\d+)$',views.stupage),url(r'^studentsearch/$',views.studentsearch),url(r'^grades1/$',views.grades1),url(r'^get1/$',views.get1),url(r'^get2/$',views.get2),url(r'^showregist/$',views.showregist),url(r'^showregist/regist/$',views.regist),url(r'^redirect1/',views.redirect1),url(r'^redirect2/',views.redirect2),url(r'^main/$',views.main),url(r'^login/$',views.login),url(r'^showmain/$',views.showmain),url(r'^quit/$',views.quit),url(r'^students1/$',views.students1),url(r'^good1/(\d+)/$',views.good1,name="good1"),url(r'^good/(\d+)/(\d+)/$',views.good,name="good"),url(r'^main1/$',views.main1),url(r'^detail/$',views.detail),url(r'^verifycode/$',views.verifycode),url(r'^verifycodefile/$',views.verifycodefile),url(r'^verifycodecheck/$',views.verifycodecheck),url(r'^upfile/$',views.upfile),url(r'^savefile/$',views.savefile),url(r'^studentpage/(\d+)/$', views.studentpage),url(r"^ajaxstudents/$", views.ajaxstudents),url(r'^studentsinfo/$', views.studentsinfo),url(r'^edit/$',views.edit),url(r'^myblog/$',views.myblog),#url(r'^images/$',views.list_all_img)
]#这里定义了多少个url就代表有多少个网页

最后是settings文件

"""
Django settings for project project.Generated by 'django-admin startproject' using Django 3.0.4.For more information on this file, see
https://docs.djangoproject.com/en/3.0/topics/settings/For the full list of settings and their values, see
https://docs.djangoproject.com/en/3.0/ref/settings/
"""import os# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'vpza$&f+9g53(8x$p0d+)m+8n8pe9aw7ag32$-#fc&k1c+8e!u'# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = TrueALLOWED_HOSTS = []# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myapp','tinymce','mdeditor',
]MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware','middleware.myapp.myMiddle.MyMiddle',
]ROOT_URLCONF = 'project.urls'TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]WSGI_APPLICATION = 'project.wsgi.application'# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databasesDATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': "kaishen",'USER': "root",'PASSWORD': "qwer123456",'HOST': "localhost",'PORT': "3306"}
}# Password validation
# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validatorsAUTH_PASSWORD_VALIDATORS = [{'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',},{'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',},{'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',},{'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',},
]# Internationalization
# https://docs.djangoproject.com/en/3.0/topics/i18n/LANGUAGE_CODE = 'en-us'TIME_ZONE = 'UTC'USE_I18N = TrueUSE_L10N = TrueUSE_TZ = True# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/STATIC_URL = '/static/'STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),
)MEDIA_ROOT=os.path.join(BASE_DIR,r'static\upfile')TINYMCE_DEFAULT_CONFIG = {'width':600,'height':400,}

还有project/__init__文件,需要定义一下数据库

import pymysql
pymysql.version_info = (1, 4, 13, "final", 0)  # 将版本信息改为1.4.13
pymysql.install_as_MySQLdb()  # 驱动设置为pymysql

blog网页简单代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>myblog</title>
</head><body>
<div>{% for blog in blogs %}<h1>{{ blog.title }}</h1>><br><h2>{{ blog.content}}</h2>{% endfor %}</div></body>
</html>

学生信息简单网页

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>学生页面</title>
</head>
<body><h1>学生信息列表</h1><ul>{%for student in students%}<li><b>学生名称--简介--班级</b><br>{{student.sname}}--{{student.scontend}}---{{student.sgrade}}</li>{%endfor%}</ul>
</body>
</html>

好了以上就是整个django项目的源码

小福利,django搭建个人网站的源码公开(一)相关推荐

  1. 从零教你实现一个小说和漫画在线阅读网站[附源码]

    今天给大家推荐的这个开源项目是一个基于 SpringBoot 实现的小说和漫画在线阅读网站. 这个开源项目叫:fiction_house. 这个开源项目是一个多平台(web.安卓 app.微信小程序) ...

  2. 简单实用的笑话段子小程序详细搭建教程(附源码),包含了视频、图片、段子三个模块

    首先上个图,看下线上效果 扫码查看线上案例 线上服务器搭建这类的,这里就不多说了,有需要的可以看我之前的文章   >> 最新版短视频去水印小程序安装详细教程(附免费源码和去水印解析接口), ...

  3. 采集网站服务器配置,搭建数据采集云服务器源码

    搭建数据采集云服务器源码 内容精选 换一换 云速建站暂不支持自主搭建代码,您可以考虑通过添加高级代码插件实现相关功能.云速建站是一套基于SaaS模式的建站系统,使用的是云服务平台,不止是一台服务器,一 ...

  4. 计算机毕业设计Java小动物领养网站(源码+系统+mysql数据库+Lw文档)

    计算机毕业设计Java小动物领养网站(源码+系统+mysql数据库+Lw文档) 计算机毕业设计Java小动物领养网站(源码+系统+mysql数据库+Lw文档) 本源码技术栈: 项目架构:B/S架构 开 ...

  5. 英皇cms影视网站系统源码_多种模板_自带采集_支持APP+pc+wap三端_(亲测可用有搭建教程)

    源码介绍 影视网站源码,自带采集功能多入口,带会员,卡密,代理等功能,免费模板可自选 支持三端:pc+wap+app端,支持视频下载,有直播,开通会员等功能,带短视频,论坛等等功能自行搭建查看,一款功 ...

  6. B2B大型电子商务门户网站系统源码+160多套企业网站模板+安装搭建教程

    分享一个B2B大型电子商务门户网站系统源码,含160多套企业网站模板,完整的代码程序包和安装搭建教程. 系统特色功能一览: 1.独家新增160多套企业网站模板,企业模板多,意味着入驻商户可以更多选择不 ...

  7. 我搭建了一个随机「毒鸡汤」语录网站附源码下载

    小伙伴们注意:公众号的推送机制不再按照时间前后推送了,微信公众号信息流乱序.君哥建议大家把科技毒瘤君公众号置顶(设为星标⭐),以便第一时间看到推送,非常感谢~,方法如下图: 1 演示效果 ★ 遇到喜欢 ...

  8. 手把手教你搭建查题网站 附带源码

    手把手教你搭建查题网站 附带源码 准备服务器/主机,域名 ,源码 下载源码:https://boo.lanzous.com/iLx2cg0oyhg 搭建步骤:默认已拥有服务器(空间)及域名 整个压缩包 ...

  9. 仿小皮手游网帝国CMS模板源码 大型手游门户网站系统源码+手机版+火车头采集

    csdn下载地址: https://download.csdn.net/download/dujiangdu123/13919533 好久没分享92game的资源了,92game一般都是采用帝国CMS ...

最新文章

  1. 正则表达式 一切从简
  2. Nessus更新到8.5.0
  3. PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树
  4. ibm java英语面试_IBMJava英文面试题(附参考答案)
  5. 计算机监控系统必须有直流系统吗,变电站直流屏是否必须用蓄电池
  6. Codeforces 1006 F - Xor-Paths
  7. 免费英文文献下载攻略
  8. android获取mp3时间长,android 获取音频时长
  9. python调用系统声音报警_python写报警程序中的声音实现win
  10. 微信公众账号开发教程(二) 基础框架搭建——转自http://www.cnblogs.com/yank/p/3392394.html...
  11. JAVA程序员就业面试题大全
  12. HDFS中Locality 为什么介于0~1之间?与HBase之间有什么关系?
  13. 解决Retrying connect to server
  14. JS 网页设置横竖屏切换
  15. 玩转代码|免费获取在线Logo设计网站的Logo
  16. NFT 地板价计算方法
  17. python计算macd指标
  18. 【PB】程序中在普通激光打印机上实现条码打印
  19. 【Android 组件化】为什么能极大提高工程编译速度?
  20. 勒索病毒是朝鲜黑客捣鬼?朝鲜官员:呵呵,这个说法很可笑

热门文章

  1. 学计算机的什么是镜像,系统镜像文件是什么 什么叫系统镜像文件
  2. Qcom平台 ADV7533 调试指南
  3. scrapy,scrapy-redis显示:什么都没爬取到:Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
  4. 刚开始看英文文献,想问一下各位,最初应该怎么看进去?
  5. 谷粒商城一介绍及基本架构todo
  6. 第十届计算机大赛获奖作品,我校学子斩获第十届中国大学生计算机设计大赛全国一等奖...
  7. 人力资源部门岗位竞聘方案
  8. Java毕设项目小区停车场管理系统(java+VUE+Mybatis+Maven+Mysql)
  9. FineReport 帆软实战一 帆软概述及软件下载
  10. 时间戳转换为yyyy-mm-dd hh:mm:ss格式