1Django快速开发实战热身
1Anaconda介绍:
oython科学计算工具包:数据科学家的工具箱
包含了python二进制开发包
包含Numpy,pandas,matplotlib,scipy,Bokeh,jupyter,pytorch,teneorflow等科学处理工具
包含了一个开源的pythonIDE:spyder
包含了conda包管理软件:conda install xxx
2安装Anaconda
下载官网:https://www.anaconda.com/products/individual
https://repo.anaconda.com/archive/Anaconda3-2021.11-Windows-x86_64.exe
3把django安装到Anaconda环境中:
C:\Users\66907>conda install django
4使用django创建会议室管理项目:
(创建项目) D:\PycharmProjects>django-admin startproject meetingroom (进入项目) D:\PycharmProjects>cd meetingroom (启动项目) D:\PycharmProjects\meetingroom>python manage.py runserver 0.0.0.0:8080 (访问项目) http://127.0.0.1:8080/
5同步数据库:
(venv) D:\PycharmProjects\meetingroom>python manage.py migrate
6创建超级用户:
python manage.py createsuperuser
7登录admin后台:
http://127.0.0.1:8080/admin
8创建职位应用jobs
D:\PycharmProjects\meetingroom>python manage.py startapp jobs
9添加应用(setting.py):
INSTALLED_APPS = [ 'jobs', ]
10编写职位表(models.py):
from django.db import models from django.contrib.auth.models import User from datetime import datetime # Create your models here. JobTypes = [ (0,"技术类"), (1,"产品类"), (2,"运营类"), (3,"设计类") ] Cities = [ (0,"北京"), (1,"天津"), (3,"河北") ] #职位模型 class Job(models.Model): job_type = models.SmallIntegerField(blank=False,choices=JobTypes,verbose_name="职位类别") job_name = models.CharField(max_length=200,blank=False,verbose_name="职位名称") job_city = models.SmallIntegerField(blank=False,choices=Cities,verbose_name="职位城市") job_reponsibility = models.TextField(max_length=1024,blank=False,verbose_name="岗位职责") job_requirement = models.TextField(max_length=1024,blank=False,verbose_name="岗位要求") creator= models.ForeignKey(User,null=True,on_delete=models.SET_NULL,verbose_name="创建者") created_data = models.DateTimeField(default=datetime.now, verbose_name="创建日期") modified_data = models.DateTimeField(default=datetime.now,verbose_name="修改时间")
11把职位表注册到admin管理后台(admin.py)
from jobs.models import Job #注册模型类 admin.site.register(Job)
12同步数据库:
D:\PycharmProjects\meetingroom>python manage.py makemigrations
D:\PycharmProjects\meetingroom>python manage.py migrate
13登录管理后台发布职位:
http://127.0.0.1:8080/admin
14定义你要在列表页面中展示的字段和修改页中需要隐藏的字段:
from django.contrib import admin from jobs.models import Job # Register your models here. #定义你要在后台页面中展示的字段 class JobAdmin(admin.ModelAdmin): #定义你需要在修改页中隐藏的字段: exclude = ('creator','created_date','modified_date') #定义你要在后台列表页中显示的字段 list_display = ('job_name','job_type','job_city','creator','created_date','modified_date') #调用系统的一个方法设置当前登录用户为职位发布者 def save_model(self, request, obj, form, change): obj.creator = request.user super().save_model(request, obj, form, change) #注册模型类 admin.site.register(Job,JobAdmin)
15自定义职位列表页
1)在jobs应用下编写基类模板templates/base.html
<!--base.html--> <h1>XXXX开放职位</h1> <p></p> {% block content %} {% endblock %}
2)在jobs应用下编写职位列表页模板templates/joblist.html
{% extends 'base.html' %}
{% block content %}
终于等到你,期待加入我们,用技术去探索一个新世界
{% if job_list %}
<ul>
{% for job in job_list %}
<li>{{ job.type_name }} <a href="/job/{{ job.id }}/" style="color:blue">{{ job.job_name }}</a> {{ job.city_name }}</li>
{% endfor %}
</ul>
{% else %}
<p>No jobs are available</p>
{% endif %}
{% endblock %}
3)编写视图(jobs/views.py):
from jobs.models import Job from django.template import loader from jobs.models import Cities,JobTypes from django.http import HttpResponse # Create your views here. def jobList(request): #获取职位列表按照职位类型排序 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 = Cities[job.job_city][1] job.job_type = JobTypes[job.job_type][1] #把上下文传给加载的模板 return HttpResponse(template.render(context))
4)定义主路由
urlpatterns = [ path('admin/', admin.site.urls), path('',include("jobs.urls")), ]
5)定义子路由
from jobs import views urlpatterns = [ #职位列表 path('joblist/',views.jobList, name="jonlist") ]
6)浏览页面
http://127.0.0.1:8000/joblist/
16完成职位详情页
1)编写职位详情页模板(jobs/templates/job.html)
{% extends 'base.html' %}
{% block content %}
<div style="margin: auto; width: 50%;">
<a href="/joblist" style="color: blue">返回职位列表</a> <p></p>
{% if job %}
<div class="position_name">
<h2>岗位名称:{{ job.job_name }}</h2>
城市:
{{ job.city_name }} <p></p>
</div>
<hr>
<div class="position_responsibility" style="width: 600px;">
<h3>岗位职责:</h3>
<pre style="font-size: 16px">{{ job.job_reponsibility }}</pre> <p></p>
</div><br>
<hr>
<div class="position_requirement" style="width:600px;">
<h3>任职要求</h3>
<pre style="font-size: 16px">{{ job.jon_requirement }}</pre>
</div><br>
<div class="apply_position">
<input type="button" style="width: 120px; background-color: lightblue;" value="申请" />
</div>
{% else %}
<p>职位不存在</p>
{% endif %}
</div>
{% endblock %}
2)编写视图(jobs/views.py):
from django.http import Http404 #职位详情页 def detail(request, job_id): try: #获取某个职位的数据 job = Job.objects.get(pk=job_id) job.city_name = Cities[job.job_city][1] except Job.DoesNotExist: raise Http404("Job does not exist") return render(request,'job.html',{'job':job})
3)定义路由:
from django.urls import path from jobs import views urlpatterns = [ #职位列表 path('joblist/',views.jobList, name="jonlist"), #职位详情 path('job/<int:job_id>/',views.detail, name="detail") ]
4)浏览测试:
http://127.0.0.1:8000/job/1/

浙公网安备 33010602011771号