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/

 

posted @ 2021-12-26 19:38  linuxTang  阅读(325)  评论(0)    收藏  举报