玛卡巴卡!
创建一个职位详情页面!代码附上
{% extends 'base.html' %}
{% block content %}
<div style="margin:auto ;width:50%;">
<a href="/joblist" style="color:blue">返回职位列表</a>
{% 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_responsibility}}
</pre>
<p></p>
</div>
<br>
<hr>
<div class="position_requirement" style="width:600px;">
<h3>任职要求:</h3>
<pre style="font-size:16px">{{job.job_requirement}}
</pre>
<p></p>
</div>
<br>
<div class="apply_position">
<input type="button" style="width:120px; background-color:lightblue;" value="申请" />
</div>
{% else %}
<p>职位不存在</p>
{% endif %}
{% endblock %}
</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