创建项目
pip install django
使用命令创建项目
django-admin startproject jobs
创建应用
python manage.py startapp job
记得将job添加到settings.py文件中的INSTALLED_APPS
迁移同步数据库,也可以建完model之后同步
python manage.py makemigrations
python manage.py migrate
创建超级用户
python manage.py createsuperuser
创建模型和admin.py
mdoels.py
from django.contrib.auth.models import User
from django.db import models
from datetime import datetime
# Create your models here.
JOB_TYPE = [
(0, '技术类'),
(1, '产品类'),
(2, '测试类'),
(3, '运维列'),
]
CITIES = [
(0, '北京'),
(1, '上海'),
(2, '广州'),
(3, '深圳'),
]
class Job(models.Model):
job_type = models.SmallIntegerField(choices=JOB_TYPE, blank=False, verbose_name="职位类型")
job_name = models.CharField(max_length=20, blank=False, verbose_name="职位名称")
job_city = models.SmallIntegerField(choices=CITIES, blank=False, verbose_name="职位地点")
job_responsibilities = models.TextField(max_length=1024, blank=False, verbose_name="职位职责")
job_requirement = models.TextField(max_length=1024, blank=False, verbose_name="职位要求")
creator = models.ForeignKey(User, blank=False, verbose_name="创建者", on_delete=models.CASCADE)
created_date = models.DateTimeField(verbose_name="创建时间", default=datetime.now)
modified_date = models.DateTimeField(verbose_name="修改时间", default=datetime.now)
class Meta:
db_table = 'job_jobinfo'
admin.py
from django.contrib import admin
# Register your models here.
from job.models import Job
class JobAdmin(admin.ModelAdmin):
list_display = ['job_name', 'job_type', 'job_city', 'creator', 'created_date', 'modified_date']
exclude = ['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)
创建url映射
工程里的urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('job/', include('job.urls', namespace='job'), name='job'),
]
# 注意一下哦 这里include里边的namespace叫做实例命名空间 使用的前提是 在job/urls.py创建 应用命名空间 app_name
app下的job/urls.py
from django.urls import path
from job import views
app_name = 'job'
urlpatterns = [
path('joblist/', views.jobList, name='joblist'),
path('jobdetail/<int:job_id>/', views.jobDetail, name='jobdetail'),
]
创建views视图
from django.http import HttpResponse, Http404
from django.shortcuts import render
# Create your views here.
from django.template import loader
from job.models import Job, JOB_TYPE, CITIES
def jobList(request):
job_list = Job.objects.all().order_by('job_name')
t = loader.get_template('job/joblist.html')
for job in job_list:
job.type_name = JOB_TYPE[job.job_type][1]
job.city_name = CITIES[job.job_city][1]
return HttpResponse(t.render({
'job_list': job_list}))
def jobDetail(request, job_id):
try:
job = Job.objects.get(pk=job_id)
job.type_name = JOB_TYPE[job.job_type][1]
job.city_name = CITIES[job.job_city][1]
except Job.DoesNotExist:
raise Http404()
return render(request, 'job/jobdetail.html', {
'job': job})
创建模板html
job/base.html
<h1>欢迎您访问酱果科技职位信息系统</h1>
{% block content %}
{% endblock %}
<h2>酱果科技官方网站</h2>
job/joblist.html
{% extends 'job/base.html' %}
{% block content %}
{% if job_list %}
<div>
<ul>
{% for job in job_list %}
<li>{
{ job.type_name }} <a
href="{% url 'job:jobdetail' job.id %}">{
{ job.job_name }}</a> {
{ job.city_name }}
</li>
{% endfor %}
</ul>
</div>
{% endif %}
{% endblock %}
job/jobdetail.html
{% extends 'job/base.html' %}
{% block content %}
<div>
<a href="{% url 'job:joblist' %}">返回职位列表</a>
<br>
{% if job %}
<div>
<h2>岗位名称:</h2> {
{ job.job_name }}
<h2>城市:</h2> {
{ job.city_name }}
</div>
<div>
<h3>岗位职责:</h3>
<p>{
{ job.job_responsibilities }}</p>
</div>
<div>
<h3>岗位要求</h3>
<p>{
{ job.job_requirement }}</p>
</div>
<input type="button" value="申请">
{% else %}
没有职位信息
{% endif %}
</div>
{% endblock %}
展示
列表页
详情页
admin后台页面
添加数据页面
这里的html页面可能确实很简易,哈哈 ,博主就是为了快,不想写复杂的样式了,有兴趣的童鞋可以美化一下,大家也要把关注点放在使用django框架做一些简单设计上,当然你要有一定的django基础,我可能省去了很多的细节。
谢谢关注点赞,有任何意见或建议,可以留言评论!每天一个小项目,希望能帮助到您@码字人