玛卡巴卡!
    Django学习 - day5 - 图1
    创建一个职位详情页面!代码附上

    1. {% extends 'base.html' %}
    2. {% block content %}
    3. <div style="margin:auto ;width:50%;">
    4. <a href="/joblist" style="color:blue">返回职位列表</a>
    5. {% if job %}
    6. <div class="position_name">
    7. <h2>岗位名称:{{job.job_name}}</h2>
    8. 城市:
    9. {{job.city_name}} <p></p>
    10. </div>
    11. <hr>
    12. <div class="position_responsibility" style="width:600px;">
    13. <h3>岗位职责:</h3>
    14. <pre style="font-size:16px">{{job.job_responsibility}}
    15. </pre>
    16. <p></p>
    17. </div>
    18. <br>
    19. <hr>
    20. <div class="position_requirement" style="width:600px;">
    21. <h3>任职要求:</h3>
    22. <pre style="font-size:16px">{{job.job_requirement}}
    23. </pre>
    24. <p></p>
    25. </div>
    26. <br>
    27. <div class="apply_position">
    28. <input type="button" style="width:120px; background-color:lightblue;" value="申请" />
    29. </div>
    30. {% else %}
    31. <p>职位不存在</p>
    32. {% endif %}
    33. {% endblock %}
    34. </div>

    总结一下该html的知识点:

    • 引用主页面“base.html” —> {% extends base.html %}
    • 定义一个 content内容 —> {% block content %} {% endblock %}
    • 定义一个带数据的判断(这个job是views通过render传过来的) —> {% if job %} {% endif %}

    接着就是views的detail定义,代码附上

    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("页面不见啦(没有城市导致的)")
    
        return render(request, 'job.html', {'job': job} )
    

    或者

    def detail(request, job_id):
            job = get_object_or_404(Job, pk=job_id)
            job.city_name = Cities[job.job_city][1]
    
        return render(request, 'job.html', {'job': job} )
    

    这边呢,有个疑点,job_id是怎么传的?
    objects.get 代表什么,pk代表什么?查下文档吧!没说呜呜呜…..

    接下来就是在urls里面添加上job.html,代码如下

    re_path(r"^job/(?P<job_id>\d+)", views.detail, name="detail")
    

    这边使用了一个正则,又到了百度的时候…..

    • 匹配头用尖号^,前部固定,后部自由
    • 匹配尾用$,后部固定,前部自由
    • 字符串:(?P\w+),+表示多个字符
      数字:(?P\d+),+表示多个数字
      类型、个数匹配:(?P

      [0-9]{4}) //4个0-9的数字
      尖括号内是变量名,会作为views中的方法的参数传给views