• day78 面试程序


    程序

    简单的web
    import socket
    from threading import Thread
    server = socket.socket()
    server.bind(('0.0.0.0',8001))
    server.listen()
    def communication(conn):
        client_msg = conn.recv(1024).decode('utf-8')
        # print(client_msg)
        path = client_msg.split('
    ')[0].split(' ')[1]
        print(path)
        #针对不同的请求路径,返回不同的文件
        if path =='/':
            conn.send(b'HTTP/1.1 200 ok 
    k1:v1
    
    ')
            # conn.send(b'who are you?')
            with open('01 index2.html', 'rb') as f:
                data = f.read()
            conn.send(data)
            conn.close()
    
    while 1:
        conn, add = server.accept()
        t = Thread(target=communication,args=(conn,))
        t.start()
    
    保持连接
    #和咱们学的socketserver那个模块很像啊
    httpd = make_server('127.0.0.1', 8001, application)	  bind connect 连接地址  
    print('Serving HTTP on port 8001...')
    # 开始监听HTTP请求:
    httpd.serve_forever()		
    

    jinja2

    from wsgiref.simple_server import make_server
    from jinja2 import Template
    
    
    def index():
        with open("index2.html", "r",encoding='utf-8') as f:
            data = f.read()
        template = Template(data)  # 生成模板文件
        ret = template.render({"name": "于谦", "hobby_list": ["烫头", "泡吧"]})  # 把数据填充到模板里面
        return [bytes(ret, encoding="utf8"), ]
    
    
    # 定义一个url和函数的对应关系
    URL_LIST = [
        ("/index/", index),
    ]
    
    def run_server(environ, start_response):
        start_response('200 OK', [('Content-Type', 'text/html;charset=utf8'), ])  # 设置HTTP响应的状态码和头信息
        url = environ['PATH_INFO']  # 取到用户输入的url
        func = None  # 将要执行的函数
        for i in URL_LIST:
            if i[0] == url:
                func = i[1]  # 去之前定义好的url列表里找url应该执行的函数
                break
        if func:  # 如果能找到要执行的函数
            return func()  # 返回函数的执行结果
        else:
            return [bytes("404没有该页面", encoding="utf8"), ]
    
    
    if __name__ == '__main__':
        httpd = make_server('', 8000, run_server)
        print("Serving HTTP on port 8000...")
        httpd.serve_forever()
    

    URL 路由分发就是当前的 枚举的那一套路

    自定义原生sql
    def auth(username,password):
        import pymysql
        conn = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',
            password='123',
            database='day53',
            charset='utf8'
        )
        print('userinfo',username,password)
        cursor = conn.cursor(pymysql.cursors.DictCursor)
    
        sql = 'select * from userinfo where username=%s and password=%s;'
        res = cursor.execute(sql, [username, password])
    
        if res:
            return True
    

    formset .py

    from django.forms.models import modelformset_factory
    from django import forms
    class StudyRecordDetialModelForm(forms.ModelForm):
        class Meta:
            model = models.StudentStudyRecord
            # fields = '__all__'
            fields = ['score','homework_note']
    class StudyRecordDetialView2(View):
          def get(self,request,class_record_id):
              all_study_record = models.StudentStudyRecord.objects.filter(  # 找到这个课程记录的所有学生记录
                              classstudyrecord=class_record_id,
                          )
              form_set_obj = modelformset_factory(model=models.StudentStudyRecord,form=StudyRecordDetialModelForm)
                        # 哪张表(model)来使用modelformset  使用这张表来加工表的时候用的哪个modermform(from)
              formset = form_set_obj(queryset = all_study_record)   #使用all_study_record来加工query记录
                        # 来加工modermform的哪些数据,通过queryset来指定
              return render(request, 'student/study_record_detail.html', { 'formset': formset })
    
    
          def post(self,request,class_record_id):
              all_study_record = models.StudentStudyRecord.objects.filter(  # 找到这个课程记录的所有学生记录
                  classstudyrecord=class_record_id,
              )
              form_set_obj = modelformset_factory(model=models.StudentStudyRecord, form=StudyRecordDetialModelForm,extra=0)
              # 哪张表(model)来使用modelformset  使用这张表来加工表的时候用的哪个modermform(from)
              formset = form_set_obj(request.POST)  # 使用all_study_record来加工query记录
              # 来加工modermform的哪些数据,通过queryset来指定
              if formset.is_valid():
                  formset.save()
              else:
                  print(formset.errors)
              #
              # return redirect(reverse('study_record',args=(class_record_id,)))
              return self.get(request,class_record_id)
              # return request.get(request,class_record_id)
    

    formset.html

       {{ formset.management_form }}        {# 类似于csrf认识的标识符      #}
          <table class="table table-bordered">
                        <thread>
                            <tr>
                                <th>姓名</th>
                                <th>考勤</th>
                                <th>作业成绩</th>
                                <th>作业评语</th>
                            </tr>
                        </thread>
                        <tbody>
                            {% for form in formset %}   {# formset 就包括了一条条记录#}
                                <tr>
                                    {{ form.id }}       {# pk值#}
                                    <td>{{ form.student }}</td>  {#默认会自动生成下拉框 ,如果不让他渲染,#}
                                                            {#那么需要使用form.instance.student.这是form对象原值,原来的数据#}
    
                                <td>{{ form.get_record_display }}</td>
    {#                            <td>{{ form.instance.get_record_display }}</td>#}
                                <td>{{ form.score }}</td>
                                <td>{{ form.homework_note }}</td>
                                </tr>
    
  • 相关阅读:
    js正則表達式语法
    购买DigtalOcean VPS 以及 连接Linux
    UVA 246
    牵一发动全身【Nhibernate基本映射】
    jquery.validate+jquery.form提交的三种方式
    [Python] 发送email的几种方式
    递归算法浅谈
    最小二乘法多项式曲线拟合原理与实现
    王立平-Android中对图像进行Base64编码
    [置顶] EasyMock的简单使用
  • 原文地址:https://www.cnblogs.com/Doner/p/11080122.html
Copyright © 2020-2023  润新知