django项目实例分析

主路线是:
先加模板,加好后去视图里面注册,然后在URLS里面添加url路径的映射

模板一:

<!--base.html-->
<h1 style="margin:auto;width:40%">蓝竹科技开放职位</h1>
<!--定义标题:蓝竹科技开放职位,居中显示并且占用页面宽度的50%-->
<p></p>
<!--#使用block指令来定义块,块的名字就叫content-->
{% block content %}
{% endblock %}

模板二:

<!--html想要显示,首先要去视图层把自定义的页面加进去-->
<!--继承base页面-->
{% extends 'base.html' %}
<!--下面的content内容会把base里面的content内容给替换掉-->
<!--html注释内容最快的方式,光标定位在要注释的行,按ctrl+/-->
{% block content %}
    终于等到你,期待加入我们,用技术去探索一个新世界
{% if job_list %}
<!--上面的意思是,判断job_list是否有内容,有则执行下面的for循环-->
<!--job_list是从视图层传过来的-->
<!--ul标签来定义一个列表,每一行是一个职位,href是个链接,链接指向职位详情的URL-->
    <ul>
<!--开始for循环-->
        {% for jobs in job_list %}
        <li>{
  
  {jobs.job_type}}   <a href="/jobs/{
  
  {jobs.id}}/" style="color:blue">{
  
  {jobs.job_name}}</a>    {
  
  {jobs.job_city}}</li>
        {% endfor%}
<!--结束for循环-->
    </ul>
{% else %}
{% endif %}
{% endblock %}

模板三:

{% extends 'base.html' %}
{% block content %}
<!--<div> 标签定义 HTML 文档中的一个分隔区块或者一个区域部分。-->
<div style="margin:auto;width:50%">
<!--    <a> 标签定义超链接,用于从一个页面链接到另一个页面。-->
<!--    <a> 元素最重要的属性是 href 属性,它指定链接的目标。-->
    <a href="/joblist" style="color:blue">返回职位列表</a>
{% if jobs %}
<!--    html中的class=是一个选择器,可以理解为一个标识,用来标识特定的标签-->
    <div class="position_name">
        <h2>岗位名称:{
  
  {jobs.job_name}}</h2>
        城市:
        {
  
  {jobs.job_city}}
    </div><br>
    <!--        <hr> 标签定义 HTML 页面中的主题变化(比如话题的转移),并显示为一条水平线。  <hr> 元素被用来分隔 HTML 页面中的内容(或者定义一个变化)。在 HTML 中,<hr> 标签没有结束标签。-->
    <hr>
    <div class="position_responsibility" style="width:600px;">
        <h3>岗位职责:</h3>
<!--        <pre> 标签可定义预格式化的文本。被包围在 <pre> 标签 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。-->
        <pre style="font-size:16px">{
  
  {jobs.job_responsibility}}
        </pre>
        <p></p>
<!--    <br> 标签插入一个简单的换行符。<br> 标签是一个空标签,意味着它没有结束标签。会让这个区块下面有较大的空白区域-->
    </div><br>
    <hr>
    <div class="position_requirement" style="width:600px;">
        <h3>任职要求</h3>
        <pre style="font-size:16px">{
  
  {jobs.job_requirement}}
        </pre>
    </div>
    <br>
    <div class="apply_position">
<!--        <input> 标签规定了用户可以在其中输入数据的输入字段-->
        <input type="button" style="width:120px;background-color:lightblue;" value="申请"/>

    </div>

{% else %}
<!--    <p> 标签定义段落。-->
<!--    <p>元素会自动在其前后创建一些空白。浏览器会自动添加这些空间,您也可以在样式表中规定。也就是较小的空白行-->
    <p>职位不存在</p>
{% endif %}
{% endblock %}
</div>

job应用视图views.py

from django.shortcuts import render
from django.template import loader
from job.models import work
from job.models import JobTypes,Cities
from django.http import HttpResponse
from django.http import Http404
# Create your views here.
#一、使用函数将html页面定义在视图层面
def joblist(request):
    job_list=work.objects.order_by('job_type')#work.objects.order_by是django modle里面的语法,可以直接取出work职位列表,并且按照职位类型排序
    template=loader.get_template('joblist.html')#用加载器将模板加载进来
    context={'job_list':job_list}#定义一个上下文
    for jobs in job_list:
        jobs.job_city=Cities[jobs.job_city][1]
        jobs.job_type=JobTypes[jobs.job_type][1]
    return HttpResponse(template.render(context))
#别忘了将joblist视图定义在url路径里面
def detail(request,jobs_id):
    try:
        jobs=work.objects.get(pk=jobs_id)
        jobs.job_city=Cities[jobs.job_city][1]
    except work.DoesNotExist:
        raise Http404("jobs does not exist")
    return render(request,'job.html',{'jobs':jobs})

job应用urls.py

from django.conf.urls import url
from job import views
urlpatterns=[
    #职位列表
    url(r"^joblist/",views.joblist,name="joblist"),
    url(r"^jobs/(?P<jobs_id>\d+)/$",views.detail,name="detail")#joblist.html中定义的超链接路径,将jobs_id作为参数传给了views.detail
]

主应用settingspy

INSTALLED_APPS = [
    'job',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

主应用url.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import include,url

urlpatterns = [
    url(r"^",include("job.urls")),#通过include将job.urls中的路径都映射过来
    path('admin/', admin.site.urls),
]

成果展示

猜你喜欢

转载自blog.csdn.net/qq_40333984/article/details/126228693
今日推荐