プロが教えるわが家の防犯対策術!

PythonのCGIserverを使っています。

/cgi-bin/hoge.py
から
/cgi-bin/foo.py
へとページを遷移させたいのですが、うまくいきません。
どうすればいいですか?
以下、hoge.pyのソースです。

#!/usr/local/bin/python
# coding: utf-8
(中略)
print "Location: /cgi-bin/foo.py\n\n"

他の方法として、
import foo
として、fooの関数やメソッドを呼ぶことも考えたのですが、
これもうまくいきません。。

A 回答 (1件)

うまくいかないとは、どう、うまく行かないんですか?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q結果を得て自動的にページ移動を行うには?

CGIプログラムの初心者です。取り合えず作ってみようと思いまして、本を片手に「診断系の占い」のプログラムを書き始めました。生年月日を入力して性格を占う(?)、いわゆる「動物占い」とか「星座占い」のようなやつです。

入力した生年月日から数値を導き、その数値を元に数通り用意した結果のページ(HTML)へ移動させるようにしたいのですが、移動のさせ方がよくわかりません。CGIの中にHTML文書を書いて表示させるのではなくて、別に用意したHTMLのページへ移動させるにはどうしたらいいのでしょうか?

とりあえず
print "Content-type: text/html\n\n";
print <<EOF;
<html>
<head>
<meta HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$kekka\">
<title>占いの結果です</title>
</head>
#以下略します
#$kekka ←この変数にアドレスを代入してます。

という感じで、<meta>を入れて移動させるようにしてみたんですけど、もっと正攻法があるんじゃないかな?と、疑問を感じました。
申し訳ありませんが、教えていただけると嬉しいです。

CGIプログラムの初心者です。取り合えず作ってみようと思いまして、本を片手に「診断系の占い」のプログラムを書き始めました。生年月日を入力して性格を占う(?)、いわゆる「動物占い」とか「星座占い」のようなやつです。

入力した生年月日から数値を導き、その数値を元に数通り用意した結果のページ(HTML)へ移動させるようにしたいのですが、移動のさせ方がよくわかりません。CGIの中にHTML文書を書いて表示させるのではなくて、別に用意したHTMLのページへ移動させるにはどうしたらいいのでしょうか...続きを読む

Aベストアンサー

別にその方法でもいいと思いますが、その他には「Locationヘッダでリダイレクトさせる」方法や「結果ページのHTMLを読み込んで表示する」方法などが考えられます。

Location の場合、
 print "Location: $kekka\n\n";
とだけ出力すればOKです。
META の Refresh による方法と、ほぼ同じ結果になります。
※$kekka は、念のため絶対URLの方がよいです。

HTMLを読み込んで表示するなら、
 print "Content-Type: text/html\n\n";
 if (open(FH, "< $file")) {  # $fileには、$kekkaに相当するHTMLのファイルパスを指定
   print <FH>;
   close FH;
 }
 else { print "Error: $!" }
という感じ。
こっちの方がMETAやLocationで飛ばすより、早くページが表示されます。

Qhtml で 変数を定義できますか?

html(できればjava不使用)で変数に文字列をいれてつかう、またはそれに近いことはできないでしょうか?

例**************************
$color1="#000000"

<tr bgcolor=$color1>内容1<tr>
<tr bgcolor=$color1>内容2<tr>
****************************
みたいな感じです

Aベストアンサー

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<meta name="author" content="ORUKA1951">
<meta http-equiv="Content-Style-Type" content="text/css">
<link rev="made" href="mailto:orika1951@hoge.com" title="send a mail" >
<link rel="START" href="../index.html">
<style type="text/css">
<!--
.parson1:before{content:"田中";}
p.age1:after{content:"36歳";}
-->
</style>
</head>
<body>
<h1>サンプル</h1>
<p class="parson1">は男の子</p>
<p class="parson1 age1">の年齢は</p>
<p>私の彼氏は<span class="parson1">君だよ</p>
</body>
</html>

調べりゃ分かることは???だけど。

CSS2で無理やり作れば・・簡単だけど・・・
生成内容、自動番号振り、リスト ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2/generate.html )
 本来はXSLTで作るほうがよいかと・・・
 <th><xsl:value-of select="parson" />の歌</th>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<title>サンプル</title>
<met...続きを読む

Q複数のsubmitボタンで押されたボタンを取得する方法

form内の、submitボタンの値が拾えません。
1つだけsubmitボタンを設置すると値が拾えますが、
2つ以上submitボタンを設置すると拾えません。
仕様上、無理なのでしょうか?

<SCRIPT language="JavaScript">
function move_post(){
alert(document.frmMvPost.btn.value);
}
</SCRIPT>

<FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()">
<INPUT type="submit" name="btn" value="テスト1">
<INPUT type="submit" name="btn" value="テスト2">
<INPUT type="submit" name="btn" value="テスト3">
</form>

Aベストアンサー

> alert(document.frmMvPost.btn.value);

btnというオブジェクトが複数あるため、btnは配列になってしまうため、
document.frmMvPost.btn.valueでは値が取れません。

回避策はonClickイベントにて値をHiddenへ格納すればOKです。

_____________________________________________________________

<SCRIPT language="JavaScript">
function move_post(){
alert(document.frmMvPost.onbtn.value);
}

function set_value(s_val)
{
document.frmMvPost.onbtn.value = s_val;
}

</SCRIPT>

<FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()">
<INPUT type="submit" name="btn" value="テスト1" onClick="set_value('テスト1')">
<INPUT type="submit" name="btn" value="テスト2" onClick="set_value('テスト2')">
<INPUT type="submit" name="btn" value="テスト3" onClick="set_value('テスト3')">
<INPUT type="hidden" name="onbtn">
</form>

_____________________________________________________________


※テストしていないため動作は保証しません。問題ある場合にはお手数ですが何かしら手を加えてください。

> alert(document.frmMvPost.btn.value);

btnというオブジェクトが複数あるため、btnは配列になってしまうため、
document.frmMvPost.btn.valueでは値が取れません。

回避策はonClickイベントにて値をHiddenへ格納すればOKです。

_____________________________________________________________

<SCRIPT language="JavaScript">
function move_post(){
alert(document.frmMvPost.onbtn.value);
}

function set_value(s_val)
{
document.frmMvPost.onbtn.value = s_val;
}

</SCRIPT...続きを読む

QonClickに複数の関数を挿入する方法

初心者なのですがアニメーションの関数anime1、anime2、anime3を作成し、onClickに下記のように設定しました。
クリックするとアニメーション2つの設定ではは動くのですが、3つ目を設定すると動かなくなります。
通常はこのような設定はしないものなのでしょうか?
教えてください。
よろしくお願いします。
<INPUT type="button" value="START" onClick="anime1(), anime2()">・・・OKです。
<INPUT type="button" value="START" onClick="anime1(), anime2(),anime3()">・・・動きません。

Aベストアンサー

セミコロンでつなぐのが常道ですが、3つ以上なら
別途function化したほうが、可読性が高くなると
思います。

QWebのPythonでの値の受け渡し

現在PythonでWebサイトの作成を行っております。

自分のやり方の問題だとは思っているのですが文字列としてページAからページBに値を渡すことはできるのですが変数の状態で送ることができずに困っています。

現在のコードはこのように書いています。



>>> 渡す側 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#! /usr/bin/env python
# coding: utf-8
html_body= u"""
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>タイトル</title>
<link rel="stylesheet" href="../../css/library.css">
</head>
<body>
<h1>ヘッダー</h1>
数秒後に移動</br>
<meta http-equiv="refresh" content="3;URL="index.py"?id={0}">
</body>
</html>"""

print "Content-type: text/html;charset=utf-8\n"
print ( html_body.format([0,1,2,3]) ).encode('utf-8')


この方法でid={0}の部分で値を渡しています。
しかし、その前に文字列になってしまっているため受け取り側での処理がいろいろと面倒だったり
渡す際にいろいろ処理をしてから渡さないとならず手間がかかります。

どのように改善すれば良いでしょうか?

現在PythonでWebサイトの作成を行っております。

自分のやり方の問題だとは思っているのですが文字列としてページAからページBに値を渡すことはできるのですが変数の状態で送ることができずに困っています。

現在のコードはこのように書いています。



>>> 渡す側 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#! /usr/bin/env python
# coding: utf-8
html_body= u"""
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>タイトル</title>
<link rel="styleshe...続きを読む

Aベストアンサー

URLでこの形で送る以上は、文字列にしなければなりません。
したがって「データを文字列に変換する」「変換された文字列を元のデータに戻す」プログラムを用意するか、既にあるものを活用するか、です。

決まった方法はありません。
あなたがやろうとしている事に合っている方法を探してください。

例えば、 [1,2,3] 程度なら
id=1,2,3
というURLになるように空白とかを調整して送信。
受信側では、 1,2,3 を
','.split(~)
で分割。
とか。


データ量がそれほどでなければ、JSONやXMLという方法もあるだろうし、ある程度大きくなったらURLとしては使えないので、別の方法を考える必要があります。

Qリンクをクリックした時にformからPOST送信したい。

HTML、PHP、JavaScript等でサイトを作っているのですが・・・。

【実現出来ている例】
<form name="form1" method="post" action="Next.php" onSubmit="return InputCheck()">
 <input type="submit" value="送信">
</form>
 submitボタンを一つ置いて、それがクリックされた場合に
formの内容をPOSTで送信する。

【実現したい例】
<form name="form1 method="post">
 <a href="Next.php" onClick="???">???</a>
</form>
 formの中のリンクをクリックされた場合に、formの内容を
POSTで送信したいのですが、その実現方法がわかりません。
GETで送るという手もあり得ますが、今回はどうしてもPOST
したいのですが。

Aベストアンサー

<form name="form1" method="post" action="Next.php">
<a href="#" onClick="document.form1.submit();">???</a>
</form>

onclick内の対象がform1としてあてているので、
アンカータグは別にform内に記述しなくても大丈夫です

form内にhidden等でnameとvalueを持ったパラメータがあればそれも送られます

アンカータグから動的にvalueを変更したい場合は、
document.form1.hogename.value = 'hoge';
等をsubmit()の前に行えば可能です

ただしform内に
<input type="hidden" name="hogename" value="">
を記述する等、変更先パラメータの元を用意する必要がありますのでご注意下さい

QCGI動作後に元のページに戻る方法

Perl , javascript 初心者です。
あるページの一番下に,チェックボックスを設置して選択してもらうという簡単なアンケートを作っています。
submit ボタンを押した後,CGI(Perl) で処理を行い,その後元のページの元いた場所(アンケートがあるところ)を表示させることはできますか?
また,できれば submit ボタンの横に「ご協力ありがとうございました」というコメントを表示したいと思います。

良い方法があれば教えて下さい。

Aベストアンサー

perlでは、
print "location: (URL)\n\n";
これでページを呼び出します。
同じフォームに戻らなくても、お礼のページを作った方が良いと思います。
どうしても、フォームに戻るなら、CGIから戻ってきたことが判るようにURLの後ろに「?back」などと識別コードを付けます。
そして、HTML内にJavaScriptを埋め込み、自分自身のURLを調べれば、普段のURLと違うことが判ります。

QCGIでソースがそのままでてしまうのですが・・・。

CGIでソースがそのまま表示されてしまうのですが、どうしてなのでしょうか?

先週からCGIやPerlを学び始めました。そこで簡単なものを試しに作ってみたのですが、入力したソースがそのまま表記されてしまいます。

ちなみに、こんなものです。

#! c:/perl64/bin/perl

print "Content-type: text/plain\n\n";
print "Hello Perl !";

どこをどう変えればいいのか、わからないので、質問してみました。

わかる方がいましたら、教えてください。

初心者なので、お手柔らかにお願いします。

.





この質問に補足する.

Aベストアンサー

CGIスクリプトのソースがそのまま出力されるのは、そのファイル/URIがCGIとして実行できていないためです。

httpd.confの<Directory>ディレクティブや<Location>ディレクティブなどの指定箇所が間違えているか、
ファイルの拡張子を間違えているか、
httpd.confを書き換えてからApacheをリスタートしていないか。。。


Forbiddenが出てきたら.cgiファイルに実行権限が無い。
Internal Server Errorが出てきたら、Perlがインストールされていないか.cgi拡張子とPerlが関連づけられていない。

ということが考えられます。

Q値だけ送信してページは遷移させないためには?

CGIの掲示板のCGI管理者ページの仕様を変更したいのですが(投稿した内容をまず確認し、実際ページに反映させる「許可」「不許可」を決定し、許可されたコメントに返信をつけるページです)、「許可」「不許可」を設定した際、その対象のスレッドの位置から遷移しないようにしたいのですが、フォームのactionで設定したページにリロードされてしまい、「許可「不許可」を編集した位置と違う位置になるので使いづらく困っています。actionで設定したCGIに値だけ送信して、現在編集している位置から移動させず「許可」「不許可」の反映を確認できるようにしたいのですが、そのような設定のためにはどのようなスクリプトがひつようなのでしょうか。

Aベストアンサー

 えーと。
 </BODY> タグの直前に、

<iframe name="f1" width=0 height=0 style="visibility:hidden"></iframe>

 というタグを置きます。

 で次に、当該の <FORM> タグのオプションの1つとして、target="f1" と追加します。
 具体的にいうとこんな感じ。

<FORM ACTION="...." TARGET="f1">

 どうでしょ?

Qapt-get install ****** でinstallしたものをuninstallするには?

御世話になります。
vncserverだけをinstallするつもりが
誤って
apt-get install vncとうってしまいました。
これをuninstallしたいのですが
どのようにすればよろしいでしょうか?

教えて下さい。

Aベストアンサー

# apt-get remove パッケージ名
では、設定ファイルは削除されずに残ります。

完全に削除するときは、
# apt-get --purge remove パッケージ名
です。


人気Q&Aランキング