标签: args

基于 Django 类的视图 - request、args 和 kwargs 对象

在我看来,在 Django 的基于类的通用视图中,参数requestargskwargs传输,既作为视图实例属性,又作为方法参数。

我到底是什么意思?

Class django.views.generic.base.View,定义了以下函数,由其as_view方法调用:

def view(request, *args, **kwargs):
    self = cls(**initkwargs)
    if hasattr(self, 'get') and not hasattr(self, 'head'):
        self.head = self.get
    self.request = request
    self.args = args
    self.kwargs = kwargs
    return self.dispatch(request, *args, **kwargs)     
Run Code Online (Sandbox Code Playgroud)

该函数首先将requestargs和设置为视图实例属性,然后使用所有这些作为参数kwargs调用视图的方法。dispatch如果有的话,这样做的具体目的是什么?这不是多余的吗?

django redundancy request args keyword-argument

3
推荐指数
1
解决办法
5314
查看次数

如何从保存的模型中使用 pk 提供成功 url?

我用 CompanyCreateView 创建了一个新模型。用 保存后f.save(),我希望浏览器加载成功 url

    url(r'^comp/(?P<pk>\w+)/$', CompanyDetailView.as_view(), name="profile"),
Run Code Online (Sandbox Code Playgroud)

这是我的 CreateView。

class CompanyCreateView(CreateView):
model = Company
form_class = CompanyForm
success_url = "/comp/???pk???"

def form_valid(self, form):
    f = form.save(commit=False)
    f.submitter_id = 99         #dont know how to remove the submitter, its not set in the model
    f.save()

    return super(CreateView, self).form_valid(form)

def get_success_url(self, **kwargs):
        return reverse("profile", kwargs={'pk': self.request.pk})
Run Code Online (Sandbox Code Playgroud)

如何使用 args 参数返回pk

python django url args

3
推荐指数
1
解决办法
1954
查看次数

将 Bash 脚本参数 $@ 存储在变量中

如何$@在保持其属性的同时存储在变量中?

即使我$@在所有可能的情况下使用或我自己的变量,我也想获得完全相同的行为。

以下尝试无效:

args=$@
args2="$@"        # the arguments are combined (see the last output paragraph)
Run Code Online (Sandbox Code Playgroud)

我使用以下行测试了它们:

s.sh A B="       " C
Run Code Online (Sandbox Code Playgroud)

s.sh

args=$@
args2="$@"        # the arguments are combined (see the last output paragraph)
Run Code Online (Sandbox Code Playgroud)

A.java

s.sh A B="       " C
Run Code Online (Sandbox Code Playgroud)

实际输出:

A B= C
A B= C
A B= C

A B= C
A B=        C
A B=        C

3: [A, B=, C]
3: [A, B=, C]
3: [A, B=, C]

1: [A B= C]
1: …
Run Code Online (Sandbox Code Playgroud)

bash parameter-passing args

3
推荐指数
2
解决办法
3613
查看次数

如何检查 *args[0] 是否存在?

在Python中,如何检查*args[0]是否存在?

def my_fxn(self, *args):
    print(args[0])

my_fxn('ABC')  # this prints 'ABC'
my_fxn()       # this crashes with "IndexError: tuple index out of range"
Run Code Online (Sandbox Code Playgroud)

python args keyword-argument

3
推荐指数
1
解决办法
1万
查看次数

kwargs/args 错误。将参数传递给 apscheduler 处理函数

将参数传递给 apscheduler 处理函数 这对我来说不起作用,我尝试了不同的语法变体(见下文)。我可能会遗漏一些更基本的东西。

@app.route("/tick", methods=['GET', 'POST'])
def tick(datetimes, texti):
    flash('DO! Sir, you have planned on the {} this:'.format(datetimes), 'success')
    flash(texti, 'info')
    return redirect(url_for('td_list'))

def Schedule_reminders():
    with app.test_request_context():
        if os.environ.get("WERKZEUG_RUN_MAIN") == "true":
            # /sf/ask/661437101/
            scheduler = BackgroundScheduler()
            tds = Td.query.all()
            for td in tds:
                run_date = td.date +' '+ td.time +':00'
                # /sf/ask/868889591/#39027779
                datetimes = run_date
                texti = td.text
                #scheduler.add_job(tick, 'date', [datetimes, texti], run_date)
            # ValueError: dictionary update sequence element #0 has length 1; 2 is required

            #scheduler.add_job(lambda: tick(datetimes, texti), …
Run Code Online (Sandbox Code Playgroud)

python args flask keyword-argument apscheduler

3
推荐指数
1
解决办法
5037
查看次数

获取Java中使用的调用名称

我正在尝试找到复制此C功能的通用方法:

int main(int argc, char** argv){
    fprintf(2,"%s: error you did something wrong.\n", argv[0]);
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

在java中.到目前为止,唯一的方法是将其硬编码到应用程序中,这很难看.我想得到类似的东西:

someObj.getClass().getSimpleName();
Run Code Online (Sandbox Code Playgroud)

在我的静态主体内,没有回到我自己的课堂.

这甚至可能吗?

编辑

我寻找一个好时光并没有把这个变成一个.

重复的问题,请参阅Java中的$ 0(程序名)?发现主要课程?回答

java command-line args

2
推荐指数
1
解决办法
352
查看次数

Java:打印出args数组中的所有整数

如何从argsJava变量中打印出一组整数?

我试过了:

System.out.println("The numbers are " + args.length);
Run Code Online (Sandbox Code Playgroud)

但所有这一切都是打印出数组中的元素数量.

我想要它,如果有5个参数传递:1 2 3 4 5输出应该是:

1, 2, 3, 4, 5
Run Code Online (Sandbox Code Playgroud)

java arrays integer args

2
推荐指数
1
解决办法
2万
查看次数

带*args的lambda表达式

我知道当我们使用时*args,这意味着我们不确定该函数将接收多少个参数.但是,Python最终将它们绑定在一个元组中:

>>> def f(*args):
    return type(args)

>>> f(3,4,4,5)
<class 'tuple'>
Run Code Online (Sandbox Code Playgroud)

假设我有一个简单的函数,它返回输入不变.我可以像这样使用嵌套的lambda:

>>> def f (x):
    return x

>>> l = f(lambda x: len(x))
>>> 
>>> l((1,2,3))
3
Run Code Online (Sandbox Code Playgroud)

请注意,输入是一个元组.但是,当我尝试使用以下函数编写相同的函数时会发生这种情况args:

>>> def f (*args):
    return args

>>> l = f(lambda x: len(x))
>>> l((1,2,3))
Traceback (most recent call last):
  File "<pyshell#106>", line 1, in <module>
    l((1,2,3))
TypeError: 'tuple' object is not callable
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误,我该如何避免?

python lambda tuples args python-3.x

2
推荐指数
1
解决办法
333
查看次数

星号`*`如何在Python 3中的字符串格式化方法`.format(*)`中工作?

什么是使用*.format(*)?在下面的格式函数中使用它时,print(new_string.format(*sum_string))它会将输出中sum_string的值从18更改为1为什么会发生这种情况?我已阅读以下链接*args,**kwargs但无法理解这是如何适用于该.format()功能

**(双星/星号)和*(星号/星号)对参数有什么作用?

sum_string = "18"
new_string = "This is a new string of value {}"

print(new_string.format(sum_string)) #it provides an output of value 18
print(new_string.format(*sum_string)) #it provides an output of value 1
Run Code Online (Sandbox Code Playgroud)

python string.format string-formatting args python-3.x

2
推荐指数
1
解决办法
1029
查看次数

在将args传递到容器时Kubernetes的pod /部署?

我是docker / k8s世界的新手,有人问我是否可以使用args部署容器来修改行为(通常是应用程序在“主”版本还是“从”版本中工作)。也许不是最佳解决方案,但它可以工作:

这是验证的简单测试。我用一个脚本创建了一个自定义图像:role.sh:

#!/bin/sh
ROLE=$1
echo "You are running "$ROLE" version of your app"
Run Code Online (Sandbox Code Playgroud)

Dockerfile:

FROM centos:7.4.1708

COPY ./role.sh /usr/local/bin
RUN chmod a+x /usr/local/bin/role.sh
ENV ROLE=""
ARG ROLE

ENTRYPOINT ["role.sh"]
CMD ["${ROLE}"]
Run Code Online (Sandbox Code Playgroud)

如果我使用以下命令从docker启动此容器:

docker run -dit --name test docker.local:5000/test master
Run Code Online (Sandbox Code Playgroud)

我最终得到以下日志,这正是我要查找的内容:

You are running master version of your app
Run Code Online (Sandbox Code Playgroud)

现在,我想使用yaml文件在k8s上具有相同的行为。我尝试了几种方法,但是都没有用。

YAML文件:

apiVersion: v1
kind: Pod
metadata:
  name: master-pod
  labels:
     app: test-master
spec:
  containers:
    - name: test-master-container
      image: docker.local:5000/test
      command: ["role.sh"]
      args: ["master"]
Run Code Online (Sandbox Code Playgroud)

我看到了很多不同的方法可以做到这一点,但我必须说,我仍然没有理解ARG和ENV之间的区别。

我也尝试过

 - name: test-master-container
   image: docker.local:5000/test …
Run Code Online (Sandbox Code Playgroud)

yaml args docker kubernetes

2
推荐指数
1
解决办法
2864
查看次数