精华内容
下载资源
问答
  • 创建项目和应用 django-admin startproject zqxt_views(项目名) cd zqxt_views python manage.py startapp calc(应用名) ————–1.采用/add?a=4&b=5这样GET方法进行————————— 修改 calc/view.py...
  • Django url,从一个页面调到另个页面,

    万次阅读 2018-04-07 22:50:41
    创建项目和应用django-admin startproject zqxt_views(项目名) cd zqxt_views python manage.py startapp calc(应用名)————–1.采用/add?a=4&b=5这样GET方法进行————————— 修改 calc/view.py文件...

    创建项目和应用

    django-admin startproject zqxt_views(项目名)
    cd zqxt_views
    python manage.py startapp calc(应用名)

    ————–1.采用/add?a=4&b=5这样GET方法进行—————————
    修改 calc/view.py文件

    from django.shortcuts import render
    from django.http import HttpResponse
    
    def add(request):
        a = request.GET['a']
        b = request.GET['b']
        c = int(a)+int(b)
        return HttpResponse(str(c))

    修改 zqxt_views/urls.py 文件,添加一个网址来对应我们刚才新建的视图函数。

    from django.conf.urls import url
    from django.contrib import admin
    from calc import views as calc_views
    
    urlpatterns = [
        url(r'^add/$', calc_views.add, name='add'),  # 注意修改了这一行
        url(r'^admin/', admin.site.urls),
    ]

    打开服务器并访问

    python manage.py runserver 8003

    打开网址

    http://127.0.0.1:8003/add/?a=4&b=5

    ————–2.采用/add/3/4这样的网址的方式—————————
    修改 calc/views.py 文件,再定义一个add2函数

    def add2(request, a, b):
        c = int(a) + int(b)
        return HttpResponse(str(c))

    接着修改 zqxt_views/urls.py 文件,再添加一个新的 url

     url(r'^add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),

    我们可以看到网址中多了 (\d+), 正则表达式中 \d 代表一个数字,+ 代表一个或多个前面的字符,写在一起 \d+ 就是一个或多个数字,用括号括起来的意思是保存为一个子组,每一个子组将作为一个参数,被 views.py 中的对应视图函数接收。

    我们再访问 http://127.0.0.1:8003/add/4/5/ 就可以看到和刚才同样的效果,但是这回网址更优雅了

    打开 zqxt_views/urls.py

    from django.conf.urls import url
    from django.contrib import admin
    from calc import views as calc_views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^add/$',calc_views.add,name='add'),
        url(r'^add/(\d+)/(\d+)/$',calc_views.add2,name='add2'),
    ]

    url(r'^add/$',calc_views.add,name='add'),中,name=’add’是用来干什么滴啊?
    简单说,name可用于在templates,models,views……中得到对应的网址,相当于给“网址取了一个名字”,只要名字不变,网址变了也能通过名字获取到。

    为了继续弄清楚这个问题,我们先建立一个首页的视图和url
    修改 *calc/views.py*

    from django.http import HttpResponse
    from django.shortcuts import render
    
    
    def index(request):
        return render(request, 'home.html')

    render 是渲染模板

    将‘calc’这个app加入到*zqxt_views/settings.py 中*

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

    这样,使用render的时候,Django会自动找到INSTALLED_APPS中列出的各个app下的templates中的文件。
    提示:DEBUG=True的时候,Django可以自动找到各个app下static文件中的静态文件(js,css,图片,资源)

    我们在calc这个app中新建一个templates文件夹,在templates中新建一个home.html
    文件 calc/templates/home.html 中写入以下内容

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>title</title>
    </head>
    <body>
        <a href="/add/4/5">计算 4 + 5 </a>
    </body>
    </html>

    修改zqxt_views/urls.py

    urlpatterns = [
        url(r'^$', calc_views.index, name='home'),
        url(r'^add/$', calc_views.add, name='add'),
        url(r'^add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),
        url(r'^admin/', admin.site.urls),
    ]

    运行服务器python manage.py runserver 8004,访问http://127.0.0.1:8004/
    我们计算加法的时候用的是 /add/4/5/ ,后来需求发生变化,比如改成 /4_add_5/,但在网页中,代码中很多地方都写死的 /add/4/5/,比如模板中可能是这么写的

    <a href="/add/4/5/">计算 4+5</a>

    如果这样写“死网址”,会使得在改了网址(正则)后,模板(template),视图(views.py,比如用于URL跳转),模型(models.py,获取记录访问地址等)用了此网址的,都必须进行相应的更改,修改的代价很大,一不小心,有的地方没改过来,就不能用了。

    reverse 接收 url 中的 name 作为第一个参数,我们在代码中就可以通过 reverse() 来获取对应的网址
    我们在终端上输入:python manage.py shell

    >>> from django.core.urlresolvers import reverse  # django 1.4.x - django 1.10.x
    或者
    >>> from django.urls import reverse  # Django 1.10.x - Django 2.x 新的,更加规范了
    
    >>> reverse('add2', args=(4,5))
    u'/add/4/5/'
    >>> reverse('add2', args=(444,555))
    u'/add/444/555/'

    在网页模板中也是一样,可以很方便的使用。

    不带参数的:
    {% url 'name' %}
    带参数的:参数可以是变量名
    {% url 'name' 参数 %}

    因此,我们将:templates/home.html

    <a href="/add/4/5/">link</a>改成
    <a href="{% url 'add2' 4 5 %}">link</a>

    这样的话,当 urls.py 进行更改,前提是不改 name(这个参数设定好后不要轻易改),获取的网址也会动态地跟着变,比如改成:

    url(r'^new_add/(\d+)/(\d+)/$', calc_views.add2, name='add2'),

    {% url ‘add2’ 4 5 %}就会被渲染成/new_add/4/5/

    有另外一个情况,如果我们原来收藏的一个网址,现在这个网址被废了,现在有个新的网址,如何让以前的/add/3/4自动跳转到新的网址那?

    具体的思路是,在view.py写一个跳转方法:

    from django.http import HttpResponseRedirect
    from django.core.urlresolvers import reverse
    
    def old_add2_redirect(request, a, b):
        return HttpResponseRedirect(
            reverse('add2', args=(a, b))
        )
    展开全文
  • 通过http请求从另一个项目获取图片流并返回该图片流踩的坑项目场景:问题描述:第一次原因分析:第一次解决方案:第二次原因分析:第二次解决方案: 项目场景: 最近有一个需求需要获取B项目所在服务器的图片,...

    项目场景:

    最近有一个需求需要获取B项目所在服务器的图片,但是该图片保存在数据库的路径是绝对路径,没找到合适的方法直接从该服务器拿到,只能通过调B项目的获取图片流的接口来获取该图片。

    问题描述:

    我写了http请求从B项目的接口获取该图片流,然后对得到的图片流进行处理再返回出去,但是遇到了偶尔可以完整返回,经常出现图片内容不同程度丢失的问题。这里贴出图片流处理有问题的部分代码
    OutputStream output = null;
    InputStream imageIn = null;
    try {
    	imageIn = userService.getUserPhotoStream(accCode);
    	output = response.getOutputStream();
    	byte[] buffer = new byte[imageIn.available()];
        imageIn.read(buffer);
        output = response.getOutputStream();
        output.write(buffer);
        output.flush();
    } catch (Exception ex) {
    	ex.printStackTrace();
    } finally {
    	if (null != output) {
    		output.close();
    	}
    	if (null != imageIn) {
    		imageIn.close();
    	}
    }
    

    第一次原因分析:

    这里我首先想到的是时延问题,在流还完全获得的时候就将该流返回出去了

    第一次解决方案:

    于是我在合适的位置加入了线程休眠代码
    try {
       Thread.sleep(10);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    

    结果他没问题了,然后我兴高采烈的换了几张图片测试,问题又来了,这次是有些图片只能显示一部分,而且每次显示的都是那一部分,我就考虑是线程休眠时间设置短了,但是无论我现场休眠时间设置为多少,都还是只显示那部分的图片。

    第二次原因分析:

    这回我在网上寻求解决方案,看有没有人遇到类似的问题,最终发现一位大佬道出了真相,imageIn.available()也就是InputStream的available()会受网络波动的影响,在处理本地图片时是没问题的,但是从网络上拿流进行处理可能会出现问题,那就只能换一种写法来处理了。

    第二次解决方案:

    以下是我修改后的代码
    OutputStream output = null;
    InputStream imageIn = null;
    try {
    	imageIn = userService.getUserPhotoStream(accCode);
    	output = response.getOutputStream();
    	byte[] buffer = new byte[10*1024*1024];
    	int len = 0;
    	while((len=imageIn.read(buffer))!=-1) {
    		output.write(buffer, 0, len);
    	}
    	output.write(buffer);
    	output.flush();
    } catch (Exception ex) {
    	ex.printStackTrace();
    } finally {
    	if (null != output) {
    		output.close();
    	}
    	if (null != imageIn) {
    		imageIn.close();
    	}
    }
    

    这回终于将这一问题解决了

    展开全文
  • 为一整批Markdown文件生成(相对)引用链接,使您可以更轻松地创建从一个文件到另一个文件的引用。 请考虑关注该项目的作者 ,并考虑为该项目以显示您的 :red_heart: 和支持。 安装 使用安装: $ npm install --...
  • 您可以使用相同的零件从一种几何形状切换到另一种几何形状 高度的灵活性:您可以随时调整或完全更改几何形状。 早上上下班,下午乘车去吗? 只需将几何形状从更舒适的运动变为更舒适的运动即可。 昨天在做杂货,...
  • Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回函数,并有力地增强错误处理。 ...
  •  平行平面的距离等于平面任意一点到另一平面的距离 四 矩阵 包括以下功能:  初始化为单位矩阵。  为向x,y,z方向缩放建立矩阵。  为任意方向缩放建立矩阵。投影平面,可以通过向平面法线方向缩放0实现。平面...
  • 项目要求:从一个页面的按钮跳转页面,该页面搜索条件变化,不从按钮进入搜索条件变成另一种 同一个页面同一个路由不同的展示条件 思路:假入从a页面的按钮调到b页面那么展示第二张图,如果不通过a页面按钮进入b...

    项目要求:从一个页面的按钮跳转页面,该页面搜索条件变化,不从按钮进入搜索条件变成另一种
    在这里插入图片描述
    在这里插入图片描述
    同一个页面同一个路由不同的展示条件
    思路:假入从a页面的按钮调到b页面那么展示第二张图,如果不通过a页面按钮进入b页面展示第一张图,搜索条件写了两个用v-show显示第一张图,a页面点击按钮的时候this.router.push(/b)sessionStorage.setItem(forma,a)bbcreatedsessionStorage.getItem(forma)this.router.push('/b')并在按钮注册的事件中用sessionStorage.setItem('forma','a')做个标记,现在跳入b页面,对b页面搜索条件进行控制,首先在created中获得sessionStorage.getItem('forma'),并且获得来源页面this.route.matched[0].path,用这两个条件判断,让哪个show,最重要的是b页面离开的时候清除掉做的标记,在destroyed中清除掉sessionStorage.setItem(‘forma’,’’)就可以了,下面是代码详述

    a页面

    <el-button
          type="warning"
          style="margin:1% 0 0 1%"
          @click="buildPoorder"
        >生成采购申请单</el-button>
     buildPoorder () {
          this.$router.push({ path: '/b' })
          sessionStorage.setItem('forma', 'a')
        },
    

    b页面

    created(){
    	this.start()
    },
    methods;{
    	 // 判断搜索条件
        start () {
          const comerouter = sessionStorage.getItem('forma')
          const comeplane = this.$route.matched[0].path
          if (comerouter == 'a' && comeplane == 'a') {
          //startShow 与stockShow是搜索条件
            this.startShow = false
            this.stockShow = true
          } else {
            this.startShow = true
            this.stockShow = false
          }
        },
    },
    destroyed () {
        sessionStorage.setItem('forma', '')
      },
    

    完成

    展开全文
  • DialogFragment的回监听

    千次阅读 2018-07-01 18:26:37
    项目中遇到的问题:如何DialogFragment创建一个回调到另一个Fragment Fragment类 public class MyFragment extends Fragment { int mStackLevel = 0; public static final int DIALOG_FRAGMENT = 1; @...

    前言

    最近在项目中遇到的问题:如何从DialogFragment创建一个回调到另一个Fragment
    在Fragment中点击了一个DialogFragment 在DialogFragment 消失的时候 通知当前的Fragment 需要做的事情

    Fragment类

    public class MyFragment extends Fragment {
            int mStackLevel = 0;
            public static final int DIALOG_FRAGMENT = 1;
            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                if (savedInstanceState != null) {
                    mStackLevel = savedInstanceState.getInt("level");
                }
            }
    
            @Override
            public void onSaveInstanceState(Bundle outState) {
                super.onSaveInstanceState(outState);
                outState.putInt("level", mStackLevel);
            }
    
            void showDialog(int type) {
                mStackLevel++;
                FragmentTransaction ft = getActivity().getFragmentManager().beginTransaction();
                Fragment prev = getActivity().getFragmentManager().findFragmentByTag("dialog");
                if (prev != null) {
                    ft.remove(prev);
                }
                ft.addToBackStack(null);
                switch (type) {
                    case DIALOG_FRAGMENT:
                        DialogFragment dialogFrag = MyDialogFragment.newInstance(123);
                        dialogFrag.setTargetFragment(this, DIALOG_FRAGMENT);
                        dialogFrag.show(getFragmentManager().beginTransaction(), "dialog");
                        break;
                }
            }
    
            @Override
            public void onActivityResult(int requestCode, int resultCode, Intent data) {
                switch(requestCode) {
                    case DIALOG_FRAGMENT:
                        if (resultCode == Activity.RESULT_OK) {
                            // 完成后的代码逻辑
                        } else if (resultCode == Activity.RESULT_CANCELED){
                            // 取消后的代码逻辑
                        }
                        break;
                }
            }
        }
    

    DialogFragment类:

     public class MyDialogFragment extends DialogFragment {
            public static MyDialogFragment newInstance(int num) {
                MyDialogFragment dialogFragment = new MyDialogFragment();
                Bundle bundle = new Bundle();
                bundle.putInt("num", num);
                dialogFragment.setArguments(bundle);
                return dialogFragment;
            }
    
            @Override
            public Dialog onCreateDialog(Bundle savedInstanceState) {
                return new AlertDialog.Builder(getActivity())
                        .setTitle(R.string.ERROR)
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .setPositiveButton(R.string.ok_button,
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog,
                                     int whichButton) {
                                        Activity.RESULT_OK, getActivity().getIntent());
                                    }
                                }
                        )
                    .setNegativeButton(R.string.cancel_button, new DialogInterface.
                    OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                getTargetFragment().onActivityResult(getTargetRequestCode(),
                                        Activity.RESULT_CANCELED, getActivity().getIntent());
                            }
                        })
                        .create();
            }
        }
    

    与君共勉

    我要一步一步往上爬
    在最高点乘着叶片往前飞
    任风吹干流过的泪和汗
    我要一步一步往上爬
    等待阳光静静看着它的脸
    小小的天有大大的梦想
    我有属于我的天
    任风吹干流过的泪和汗
    总有一天我有属于我的天
    这里写图片描述

    展开全文
  • 新手高手——C++全方位学习-(零起点范例教学)-》,作者:范磊,出版社:科学出版社,ISBN:9787030247063,PDF 格式,影印版,大小 68Mb,被压缩为 2 部分,本资源是第部分:第部分下载地址:...
  • 插件的另一个功能是自动地址解析器,它允许选定的纬度和经度获取地址行。该插件还支持按键入绑定输入元素的地址进行搜索,绑定输入元素使用google api中的自动完成功能来简化搜索过程。在这种情况下,成功的地址...
  • 有源区中的掺杂剂形成一个原子级网络,电子可以通过该网络从一个电极跳到另一个电极。 该物理过程导致在读出处的输出电流非线性地取决于施加在激活电极上的电压。 通过调节施加到一些电极上的电压,可以根据其余
  • 项目日记之ORACLE问题

    2007-07-11 22:26:00
    最近赶项目的一个模块,功能大致是每天定时用户方另一个数据库里读取一些数据到项目所使用的Oracle10g数据库里,当然要经过逻辑上的转换才能入库。由于项目里使用了spring1.1 所以花了一部分时间quartz,一部分...
  • 全文共2619字,预计学习时长7分钟 图源:unsplash 笔者去初创公司工作主要是为了做项目,所以尽管任务紧急、团队又小,还伴随着频繁改动的...更糟糕的是,当笔者团队中的一个人被另一个项目时,他的工作量落.
  • 所以相对于豆瓣官方应用“一个叫‘豆瓣’的App”,也正好将这个应用称为“另一个叫豆芽的应用”了。 为什么要有豆芽? 直接访问豆瓣的所有人里,最普遍而一致的用法是围绕电影、电视、书、唱片、活动(我们叫做”...
  • js 回函数理解

    2017-08-02 19:17:52
    最近换了工作,终于只有我一个前端的环境中解放出来,也可以看到公司其他同事的代码,就自己的...这样的好处是 一个对象的功能和方法特别的整齐,你甚至可以全部复制到另一个项目中使用。 对闭包,apply和call ,thi
  • 自己很优秀,是项目里面的技术权威,但最终公司重组,自己被调到另一个组,一切从头开始。 刘欢唱得好:心若在,梦就在,只不过是从头再来。但事情真落到自己头上,恐怕就不这么轻松了。 公司角度来讲,...
  •  Cassandra 在2009 年1 月成为了Apache 基金会的一个孵化器项目。不久, 以Apache Cassandra 项目主席Jonathan Ellis 为首的开发者们发布了Cassandra 0.3,随后稳定不断地发布新的小版本。虽然Cassandra 在本书完成...
  • Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...
  • 主程序(exe)中调用一个DLL(称为D)中的类,这个类又调用另一个DLL(称为B)中的类,在每一级的调用之前都已经传入了一个函数指针, 在B执行完之后通过回返回上一个DLL(D),然后再通过回最后返回主程序。...
  • 对于我的项目,我必须开发某种计数器来阻止从一个子系统到另一个子系统的输入,在 5 次后发送。 所以在网站上搜索没有任何贡献,我决定创建我自己的一些版本。 我希望这会对有类似问题的人有所帮助。 此外,通过复位...
  • 主要项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个小型的系统,投入的人力,财力与物力来讲是非常小的,发布出去之需要...
  • 我用加粗的格式说一句来表示强调:当你网上下载下来一个项目时,先别急着用AndroidStudio打开。 在打开一个新项目之前,最好先手动修改两个版本号。如下图所示 对应上面两个文件,在目录中显示如下 怎么改呢?很...
  • 所以一些依赖 DOM 更新的结果的断言需要在 <code>Vue.nextTick</code> 的回中执行</li><li>模拟鼠标、键盘的事件后的断言也要放在一个事件循环之后来执行,可以简单 <code>setTimeout( _ => { }, ...
  • 主要项目的经济上进行分析评价,一方面是支出的费用,包括设备购置费、管理和维护费用、人员工资和培训费等,另一个是取得的收益。这是个小型的系统,投入的人力,财力与物力来讲是非常小的,发布出去之需要...
  • 有对区块链感兴趣的,可以参考项目作者另一个 GVP 项目,java 区块链底层入门。 如果只是需要用这个框架,请往下看即可。如果需要深入了解这个框架是如何一步一步实现的,接到需求,每一步的思考,每个类为什么...
  • 4.11 使用intent启动另一个activity 155 4.12 使用bundle实现activity间的数据传送 159 4.13 使用startactivityforresult实现数据的返回 165 4.14 设置自己的手机显示模式 170 4.15 更改手机屏幕方向 173 ...
  • 这种质量还可以使声音抢占,这是机器人技术中另一个重要概念,需要不断检查和处理前提条件。 此外,该项目还展示了同步响应式编程如何帮助将基于委托的回API(与Apple框架一样)转换回结构化代码以简化其使用。 ...
  • 异步编程 “同步基本上意味着您一次只能执行一件事情。异步意味着您可以一次执行多事情,而不必继续执行当前的事情就可以继续执行下一件事。... 您不希望在等待从另一台计算机收到回音时冻结应用程序。 输

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 268
精华内容 107
关键字:

从一个项目调到另一个项目