二、使用Django创建一个基础应用

职位管理系统 - 建模
  • 职位名称
  • 类别
  • 工作地点
  • 职位职责
  • 职位要求
  • 发布人
  • 发布日期
  • 修改日期
安装django
pip install django==5.0
查看django版本
python -m django --version
创建项目
django-admin startproject recruitment
启动服务
python manage.py runserver 0.0.0.0:8000
创建应用
 python .\manage.py startapp jobs

jobs表示关于职位管理的应用

生成迁移文件
python .\manage.py makemigrations
迁移数据
python .\manage.py migrate 
创建后台管理员账号
 python .\manage.py createsuperuser
创建模型
from datetime import datetimefrom django.db import models
from django.contrib.auth.models import User# Create your models here.
JobTypes = [(0, "技术类"),(1, "产品类"),(2, "运营类"),(3, "设计类"),
]Cities = [(0, "北京"),(1, "上海"),(2, "深圳"),(3, "西安"),
]class Job(models.Model):job_type = models.SmallIntegerField(blank=False, choices=JobTypes, verbose_name="职位类别")job_name = models.CharField(max_length=250, blank=False, verbose_name="职位名称")job_city = models.SmallIntegerField(choices=Cities, blank=False, verbose_name="工作地点")job_responsibility = models.TextField(max_length=1024, verbose_name="职位职责")job_requirements = models.TextField(max_length=1024, blank=False, verbose_name="职位要求")creator = models.ForeignKey(User, verbose_name="创建人", null=True, on_delete=models.SET_NULL)created_date = models.DateTimeField(verbose_name="创建时间", default=datetime.now)modified_date = models.DateTimeField(verbose_name="修改时间", default=datetime.now)
注册模型
from django.contrib import adminfrom jobs.models import Job# Register your models here.
admin.site.register(Job)
注册应用

在settings.py INSTALLED_APPS下注册应用

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','jobs'
]
迁移模型
python .\manage.py makemigrations
python .\manage.py migrate 

快速迭代完善应用

设置Django Admin模型显示的字段
class JobAdmin(admin.ModelAdmin):list_display = ("job_name", "job_type", "job_city", "creator", "created_date", "modified_date")admin.site.register(JobAdmin)
设置Django Admin新增/修改时不需要手动编辑的字段
class JobAdmin(admin.ModelAdmin):exclude = ("creator", "created_date", "modified_date")
admin.site.register(JobAdmin)
设置Django Admin创建/修改人为当前登录用户
class JobAdmin(admin.ModelAdmin):def save_model(self, request, obj, form, change):obj.creator = request.usersuper().save_model(request, obj, form, change)
admin.site.register(Job, JobAdmin)

image

添加自定义页面

  • 列表页时独立页面,使用自定义的页面
  • 添加如下页面
    • 职位列表页
    • 职位详情页
  • 匿名用户可以访问
职位列表展示

image

前端

{% extends 'base.html' %}
终于等到你,期待加入我们,用技术去探索一个新世界
{% if job_list %}<ul>{% for job in job_list %}<li>{{ job.type_name }} <a href="/job/{{ job.id }}">{{ job.job_name }}</a></li>{% endfor %}</ul>
{% else %}<p>No jobs are avaliable.</p>
{% endif %}

后端

from django.core.handlers.wsgi import WSGIRequest
from django.http import HttpResponse
from django.template import loaderfrom jobs.models import (Job,Ciyies,JobTypes)# Create your views here.def joblist(request: WSGIRequest):"""职位列表页Args:request (_type_): WSGIRequestReturns:_type_: HttpResponse"""job_list = Job.objects.order_by("job_type")template = loader.get_template("joblist.html")context = {"job_list": job_list}for job in job_list:job.city_name = Ciyies[job.job_city][1]job.job_type = JobTypes[job.job_type][1]return HttpResponse(template.render(context))
职位详情展示

image

前端

{% extends "base.html" %}{% block content %}
<div style="margin:auto; width:50%">
{% if job %}
<div class="psition_name"><h2>岗位名称:{{ job.job_name }}</h2>城市:{{ job.city_name }}
</div>
<hr>
<div class="position_responsibility" style="width:100%"><h3>岗位职责:</h3><pre style="font-size:16px">{{ job.job_responsibility }}</pre>
</div>
<hr>
<div class="position_requirement" style="width:100%"><h3>任职要求:</h3><pre style="font-size:16px">{{ job.job_requirement }}</pre>
</div>
<hr>
<div class="apply_position"><input type="button" class="btn btn-danger" style="width:120px;" value="返回" onclick="location.href='/jobs/joblist'"/><input type="button" class="btn btn-success" style="width:120px;" value="申请" onclick="location.href='/resume/add/?apply_position={{job.job_name}}&city={{job.city_name}}'"/>
</div>
{% endif %}
</div>
{% endblock %}

后端视图

def detail(request: WSGIRequest, job_id: int):"""获取job详情Args:request (WSGIRequest): _description_"""try:job: Job = Job.objects.get(pk=job_id)job.city_name = Ciyies[job.job_city][1]except Job.DoesNotExist:raise Http404()return render(request, "job.html", {"job": job})

url

path("job/<int:job_id>", views.detail, name="detail")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/329790.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据库|基于T-SQL创建数据库

哈喽&#xff0c;你好啊&#xff0c;我是雷工&#xff01; SQL Server用于操作数据库的编程语言为Transaction-SQL,简称T-SQL。 本节学习基于T-SQL创建数据库。以下为学习笔记。 01 打开新建查询 首先连接上数据库&#xff0c;点击【新建查询】打开新建查询窗口&#xff0c; …

Vue3:封装Table 表格组件

组件官网 elementPlus : 点击跳转 封装组件 创建新的组件文件: Table.vue <!-- PropTableS &#xff1a; 父组件传递过来的数据 (对象)PropTableS.tables : 父组件传递的对象中 存放表格每行显示的数据PropTableS.keyS &#xff1a; 父组件传递过来的对象&#xff0c;里…

java集合类详解

目录 1、数组导入&#xff1a; 2、单列集合 List接口 1、ArrayList&#xff1a;数组列表 ArrayList类中的方法 2、LinkedList&#xff1a;链表列表 3、Vector&#xff1a;数组列表 4、list集合的遍历 1、for循环遍历 2、增强for循环 3、迭代器遍历 Set接口 1、Has…

React渲染流程

在 React 渲染分为两个阶段&#xff0c;Render 和 Commit&#xff0c;Render 是修改 React 组件的状态&#xff0c;把需要更新的组件标记为待更新&#xff0c;在 Commit 阶段将待更新的组件进行渲染并最终更新到浏览器的 Dom 树中。 Render 阶段是可以并执行操作的&#xff0c…

vue3项目+TypeScript前端项目 ———— elemnet-plus,svg图标配置,sass,mock数据

一.集成element-plus 官网地址 安装 pnpm install element-plus 引入 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.…

JAVA基础面试题(第十三篇)线程并发死锁等!

线程死锁并发 1. 线程和进程有什么区别&#xff1f; 线程具有许多传统进程所具有的特征&#xff0c;故又称为轻型进程(Light—Weight Process)或进程元&#xff1b;而把传统的进程称为重型进程(Heavy—Weight Process)&#xff0c;它相当于只有一个线程的任务。在引入了线程的…

JetLinks物联网平台初步使用——TCP接入

基于上一篇&#xff0c;完整的搭建了前后端整个系统&#xff0c;可以在windows 7完美的运行使用。 目录 1、创建网络组件 2、创建协议管理 3、创建网关 ​4、创建产品 ​5、创建设备 6、模拟对接 1、创建网络组件 进入平台后&#xff08;用户名密码都是admin&#xff…

GRPC服务使用

目标&#xff1a; 1.什么是GRPC服务&#xff1f; 2.安卓客户端怎么不熟GRPC服务&#xff1f; 3.怎么生成GRPC的java类&#xff1f; 一、什么是GRPC服务&#xff1f; GRPC 一开始由 google 开发&#xff0c;是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。 支持长…

Android Webview加载pdf文件无法缩放问题

WebView设置开启页面缩放&#xff1a; settings webView.getSettings(); settings.setSupportZoom(true); settings.setJavaScriptEnabled(true); settings.setUseWideViewPort(true); settings.setLoadWithOverviewMode(true); settings.setBuiltInZoomControls(true); sett…

Matlab 2023b学习笔记1——界面认识

下载安装好Matlab后&#xff0c;可以看到如下界面&#xff1a; 可以看到&#xff0c;这时只有命令行窗口。我们在上方工具栏中选择“布局”—— “默认”&#xff0c;即可看到左右两边多出来了“当前文件夹”与“工作区”两栏。 一、当前文件夹界面 这个界面显示的是当前目录下…

常见应用流量特征分析

目录 1.sqlmap 1.常规GET请求 2.通过--os-shell写入shell 3.post请求 2.蚁剑 编码加密后 3.冰蝎 冰蝎_v4.1 冰蝎3.2.1 4.菜刀 5.哥斯拉 1.sqlmap 1.常规GET请求 使用的是sqli-labs的less7 &#xff08;1&#xff09;User-Agent由很明显的sqlmap的标志&#xff0c;展…

二叉数之插入操作

首先是题目 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;可能存在多种有效…

佩戴安全头盔监测识别摄像机

佩戴安全头盔是重要的安全措施&#xff0c;尤其在工地、建筑工程和工业生产等领域&#xff0c;安全头盔的佩戴对于工人的生命安全至关重要。为了更好地管理和监控佩戴安全头盔的情况&#xff0c;监测识别摄像机成为了一项重要的工具。监测识别摄像机可以通过智能技术监测并记录…

小程序-滚动触底-页面列表数据无限加载

// index/index.vue <template> <!-- 自定义导航栏 --> <CustomNavbar /> <scroll-view scrolltolower"onScrolltolower" scroll-y class"scroll-view"> <!-- 猜你喜欢 --> <Guess ref"guessRef" /> </s…

vue koa post 请求代理失败问题总结

场景是在使用 koa 写接口时&#xff0c;客户端发送 post 请求&#xff0c;服务端会报下面这个错误&#xff0c;导致接口未能访问成功&#xff1a; 前端接口一直 Pending 状态&#xff0c; 解决方案&#xff1a;走的是本地 mock 数据&#xff0c;未访问服务端的接口 总结&#x…

.NET调用阿里云人脸核身服务端 (ExecuteServerSideVerification)简易流程保姆级教学

需要注意的是&#xff0c;以下内容仅限基础调用 功能说明 该功能是输入核验人的姓名和身份证以及人脸照片&#xff0c;去阿里库里面匹配&#xff0c;3个信息是否一致&#xff0c;一致则验证通过&#xff0c;需要注意的是&#xff0c;人脸有遮挡&#xff0c;或者刘海&#xff0…

「项目」负载均衡在线OJ(ONLINE_JUDGE)系统

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

作家百度百科怎么做出来的 怎么创建作家百科词条才能通过

创建作家百度百科词条需要遵循一定的步骤&#xff0c;并注意一些关键点&#xff0c;以确保词条能够顺利通过审核。以下是伯乐网络传媒pouquan根据经验结果得出的详细指导&#xff1a; 准备工作 注册百度账号&#xff1a;在创建任何百度百科词条之前&#xff0c;您需要先注册一…

Llama模型家族之使用 Supervised Fine-Tuning(SFT)微调预训练Llama 3 语言模型(一) LLaMA-Factory简介

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

docker 指定jdk11镜像执行jar

dockerfile :下载jdk11 并将上传的jar 放入jdk11容器/root&#xff0c;改名为app.jar vi dockerfile 。。。。内容见下图 # 构建jdk11镜像 docker build -t demo . # 也可以通过jdk11镜像&#xff08;前提有jdk11镜像&#xff09;外挂载目录方式运行jar docker run --name d…