隔离Day2-django学习

隔离Day2-django学习,第1张

为啥没有第一天呢?

因为第一天太累了,而且虽然隔离了但白天还要上班。也没有想好要学什么。

因为目前公司的测试平台的框架是django的,所以暂就学习django呗。原始课程是在极客时间上的。

1.建一个django的项目

直接在pycharm里面,新建就可以了

2.创建包含用户管理的系统

在urls.py中添加 admin

from django.contrib import admin
from django.urls import path
from django.conf.urls import include,url
urlpatterns = [
    path('admin/', admin.site.urls)
]

启动django,访问http://127.0.0.1:8000/admin/

 创建用户pycharm里面点下面的manage.py

初始化数据库:

先执行makemigrations   

再执行migrate

 

 

输入:createsuperuser   创建管理员账户  输入用户名密码

 用创建好的用户名和密码登录就可以看到管理后台了。

3.创建一个职位管理系统

1)创建app startapp jobs

 2)创建完app要去项目的settings里面去注册下

 3)创建model

blank=True  非空

choices相当于枚举类型

verbose_name 后台显示的名称

ForeignKey 外键  null=True 可以设置为null   on_delete=models.SET_NULL 用户删除的时候,这里设置成null,这个是有几种选择的。

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,"设计类")
]

Citys =[
    (0,"北京"),
    (1,"上海"),
    (2,"深圳")
]
class Job(models.Model):
    job_type = models.SmallIntegerField(blank=True,choices=JobTypes,verbose_name="职位类别")
    job_name = models.CharField(max_length=250,blank=True,verbose_name="职位名称")
    job_city = models.SmallIntegerField(blank=True,choices=Citys,verbose_name="工作地点")
    job_reponsibility = models.TextField(max_length=1024,verbose_name="职位职责")
    job_requirement = models.TextField(max_length=1024,verbose_name="职位要求")
    creator = models.ForeignKey(User,verbose_name="创建人",null=True,on_delete=models.SET_NULL)
    create_date = models.DateTimeField(verbose_name="创建日期",auto_now_add=True)
    update_date = models.DateTimeField(verbose_name="修改时间",auto_now=True)

4)执行makemigrations   再执行migrate 创建数据库

5)要想让它显示在admin的后台,需要去admin里面去注册一下

通过admin.stie.register(Job)去注册,注册完,就可以在admin后台查看了

JobAdmin是模型的管理类

list_display  管理后台的列表里显示哪些项,不然不显示的
exclude  web后台职位详情里面哪些项不显示
save_model  保存模型的干点什么
from django.contrib import admin
from jobs.models import Job
# Register your models here.

#model管理类
class JobAdmin(admin.ModelAdmin):
    list_display = ('job_name','job_type','job_city','creator','create_date','update_date')
    exclude = ('creator','create_date','update_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)
4.让匿名用户浏览职位列表

1)在jobs 下面新建一个templates的目录

2)创建一个base页面

block这个是预留,给后面继承的页面填充内容



开心果科技的开发职位

{% block content %} {% endblock %}

3)创建一个职位列表页面

通过 extends 去继承base页面

{% % } 这种里面写语句

{{}} 这种里面写变量

{% extends 'base.html' %}

{% block content %}
终于等到你,加入我们一起奋斗吧!
    {% if job_list %}
        
    {% for job in job_list %}
  • {{ job.type_name }}{ job.id }}" >{{ job.job_name }}{{ job.city_name }}
  • {% endfor %}
{% else %}

no jobs are avaliable

{% endif %} {% endblock %}

4)写视图函数

Job.objects.order_by('job_type')  取值

loader.get_template  加载列表页面

from django.shortcuts import render

from django.http import HttpResponse
from django.template import loader
from django.http import  Http404
from jobs.models import Job
from jobs.models import Citys,JobTypes
# 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 = Citys[job.job_city][1]
        job.type_name = JobTypes[job.job_type][1]

    return  HttpResponse(template.render(context))

5)在jobs下面新建urls.py

from django.conf.urls import  url
from jobs import  views

urlpatterns = [
    #职位列表
    url(r'^joblist/',views.joblist,name='joblist')
    
]

6)再去项目的urls.py中去注册一下

from django.contrib import admin
from django.urls import path
from django.conf.urls import include,url
urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^',include('jobs.urls'))
]
5.让匿名用户去浏览详情

1) 创建详情页面

{% extends 'base.html' %}

{% block content %}
    
    返回职位列表
    {% if job %}
        
        岗位名称:{{ job.job_name }}
        城市:
        {{ job.city_name }}
        
        
岗位职责:
{{ job.job_reponsibility }}



任职要求:
{{ job.job_requirement}}

{% else %}

职位不存在

{% endif %} {% endblock %}

2)创建视图函数

带变量的

def detail(request,job_id):
    try:
        job = Job.objects.get(pk=job_id)
        job.city_name = Citys[job.job_city][1]
    except Job.DoesNotExist:
        raise Http404('job does not exist')
    return render(request,'job.html',{'job':job})

3)配置路由

?P 这时带名称的正则表达式  <>里的是变量

from django.conf.urls import  url
from jobs import  views

urlpatterns = [
    #职位列表
    url(r'^joblist/',views.joblist,name='joblist'),
    url(r'^job/(?P\d+)/$',views.detail,name='detail')
]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/787425.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存