日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2023/12/29 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小福利,django搭建个人网站的源码公开(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

大家好,我是天空之城,今天給大家?guī)?lái)小福利,django搭建個(gè)人網(wǎng)站的源碼公開(一)
**django框架的原理:**它采用的是MVT架構(gòu),m就是model數(shù)據(jù)模型,就是數(shù)據(jù)的結(jié)構(gòu)和字段,比如是個(gè)人博客數(shù)據(jù),就需要定義title和content數(shù)據(jù)類型,其他的表格之類的也需要定義相應(yīng)的數(shù)據(jù)類型;v就是views就是視圖也就是控制中心,所有網(wǎng)頁(yè)顯示的內(nèi)容都需要在這里用函數(shù)來(lái)定義,包括從數(shù)據(jù)庫(kù)中調(diào)用數(shù)據(jù);t就是template模塊,就是你要展示的具體網(wǎng)頁(yè)內(nèi)容html語(yǔ)言和css語(yǔ)言,這就是大體的框架,另外還要放一些static靜態(tài)文件,比如圖片,js文件之類。
當(dāng)你拿到一個(gè)django文件首先需要看一下數(shù)據(jù)庫(kù)配置,你先啟動(dòng)mysql數(shù)據(jù)庫(kù)并建立相應(yīng)的數(shù)據(jù)庫(kù)名稱,再進(jìn)行數(shù)據(jù)庫(kù)文件的遷移

python manage.py makemigrations python manage.py migrate創(chuàng)建網(wǎng)站后臺(tái)用戶名和密碼 python manage.py createsuperuser

首先是項(xiàng)目目錄截圖

其次是視圖views文件

這里每定義的一個(gè)函數(shù)就代表返回一個(gè)網(wǎng)頁(yè) 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,"我叫劉詩(shī)",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')# 存儲(chǔ)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# 引入隨機(jī)函數(shù)模塊import random# 定義變量,用于畫面的背景色,寬,高bgcolor = (random.randrange(20, 100), random.randrange(20, 100), random.randrange(20, 100))width = 100height = 50# 創(chuàng)建畫面對(duì)象im = Image.new('RGB', (width, height), bgcolor)# 創(chuàng)建畫面對(duì)象draw = ImageDraw.Draw(im)# 調(diào)用畫筆的point()函數(shù)繪制噪點(diǎn)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)# 定義驗(yàn)證碼的備選值str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'# 隨機(jī)選取4個(gè)值作為驗(yàn)證碼rand_str = ''for i in range(0, 4):rand_str += str[random.randrange(0, len(str))]# 構(gòu)造字體對(duì)象font = ImageFont.truetype(r'C:\Windows\Fonts\simfang.ttf', 40)# 構(gòu)造字體顏色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個(gè)字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,用于做進(jìn)一步的驗(yàn)證request.session['verify'] = rand_str# 內(nèi)存文件操作import iobuf = io.BytesIO()# 將圖片保存在內(nèi)存中,文件類型為pngim.save(buf, 'png')# 將內(nèi)存中的圖片數(shù)據(jù)返回給客戶端,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 = "請(qǐng)重新輸入!"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"]# 文件在服務(wù)器端的路徑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):# 所有學(xué)生列表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數(shù)據(jù)模型文件

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里面的文件,要注冊(cè)你定義的類

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']

接下來(lái)是項(xiàng)目下面的主目錄project/urls路由文件,和app下面的app/urls路由文件,這個(gè)是控制你的網(wǎng)頁(yè)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) ]#這里定義了多少個(gè)url就代表有多少個(gè)網(wǎng)頁(yè)

最后是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__文件,需要定義一下數(shù)據(jù)庫(kù)

import pymysql pymysql.version_info = (1, 4, 13, "final", 0) # 將版本信息改為1.4.13 pymysql.install_as_MySQLdb() # 驅(qū)動(dòng)設(shè)置為pymysql

blog網(wǎng)頁(yè)簡(jiǎn)單代碼

<!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>

學(xué)生信息簡(jiǎn)單網(wǎng)頁(yè)

<!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>學(xué)生頁(yè)面</title> </head> <body><h1>學(xué)生信息列表</h1><ul>{%for student in students%}<li><b>學(xué)生名稱--簡(jiǎn)介--班級(jí)</b><br>{{student.sname}}--{{student.scontend}}---{{student.sgrade}}</li>{%endfor%}</ul> </body> </html>

好了以上就是整個(gè)django項(xiàng)目的源碼

總結(jié)

以上是生活随笔為你收集整理的小福利,django搭建个人网站的源码公开(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本三级一区二区三区 | 91久热| 综合色吧| 中文字幕日本在线观看 | 男人天堂一区二区 | 91麻豆精品一区二区三区 | 日本男女网站 | 麻豆久久久久久久 | 尤物视频在线观看视频 | 91蜜桃 | 日韩欧美一区二区三区在线 | 91一区二区 | 一个综合色 | 久久精品10 | 91国产大片| 欧美中文字幕一区二区三区 | 欧洲做受高潮欧美裸体艺术 | 伊人网在线免费观看 | 四川一级毛毛片 | 欧美性xxxxx极品娇小 | 成人音影| 国产午夜精品一区二区理论影院 | 日本免费a视频 | 少妇av一区二区三区 | 懂色av一区二区三区四区五区 | 99精品人妻无码专区在线视频区 | 黄色成人影视 | 国产亚洲欧美日韩精品 | 亚洲黄色免费在线观看 | 国产精品国产三级国产专区51区 | 久久久蜜桃一区二区人 | 91抖音在线观看 | 国产成年人 | 国产精品久久久久久久 | 精品综合在线 | 婷婷色在线观看 | 亚洲精品无码久久久 | 在线成人小视频 | 久久久久久久久久久久久久免费看 | 成人18视频免费69 | 国内成人自拍 | av手机观看 | 中日韩av在线 | 双女主黄文 | 久久嫩草精品久久久久 | 黑人一级视频 | 欧美69影院 | 波多野结衣在线观看一区二区三区 | 久久久久久久久久影院 | 日本午夜精华 | 青娱乐在线视频观看 | 视频一区 中文字幕 | 中文字幕+乱码+中文乱码91 | 久久人人爽人人爽人人片亚洲 | 色噜| 亚洲熟妇av乱码在线观看 | 亚洲精品无码久久久 | 天堂资源在线播放 | 欧美大片一区二区三区 | 强videoshd酒醉 | 免费在线视频观看 | 中文字幕av一区二区三区人妻少妇 | 无码精品人妻一区二区三区影院 | 成人黄色录像 | 久久亚洲AV成人无码一二三 | 啪啪日韩 | 国产精品1区2区3区 在线看黄的网站 | 久久久久久av无码免费网站 | 午夜在线成人 | 久久午夜鲁丝 | 国产精品国产三级国产aⅴ9色 | 91精品免费 | 国产精品无码人妻一区二区在线 | 中文av免费 | 操操影视 | 日本高清一区二区视频 | 亚洲午夜视频在线观看 | 国产精品18久久久久久无码 | 在线观看日本 | 国产aaa视频| 超碰综合网 | 久久精品大全 | 天天综合天天做天天综合 | 国模丫头1000人体 | 中日韩欧美在线观看 | 色综合久久综合 | 中文字幕美女 | 日本视频免费观看 | 色屁屁 | 免费黄色看片网站 | 国内自拍在线观看 | 久久精品无码Av中文字幕 | 青青草视频网站 | 久久久九九 | 少妇久久久久 | 2019年中文字幕 | 亚洲综合在 | 亚洲性夜 | 影音资源av|