https://stackoverflow.com/questions/47933278/django-project-namespace-admin-isnt-unique を参考にさせていただきました。
path('admin/', admin.site.urls)を重複して、urls.pyに指定していたのが原因だった。Top階層のurls.pyのみに指定すると、解決。
https://stackoverflow.com/questions/47933278/django-project-namespace-admin-isnt-unique を参考にさせていただきました。
path('admin/', admin.site.urls)を重複して、urls.pyに指定していたのが原因だった。Top階層のurls.pyのみに指定すると、解決。
※View内のenviroment切り替えは、environment=request.site.sitedetail.production_sandbox
Follow the steps to open the Developer Dashboard, but this time choose Production mode and copy the production application ID and access token.手順に従って開発者ダッシュボードを開きますが、今回は本番モードを選択し、本番アプリケーション ID とアクセス トークンをコピーします。
Update the domain string in the JavaScript reference from sandbox.web.squarecdn.com/v1/square.js to web.squarecdn.com/v1/square.js.JavaScript リファレンスのドメイン文字列を sandbox.web.squarecdn.com/v1/square.jsからweb.squarecdn.com/v1/square.js に更新します
The Web Payments SDK requires a valid application ID to return a payment token. Update the code by providing your production application ID.Web Payments SDK では、支払いトークンを返すために有効なアプリケーション ID が必要です。本番アプリケーション ID を指定してコードを更新します。
In the "Configure the backend with your access token" section, you provided a Sandbox access token. Replace it with the production access token.「アクセス トークンを使用してバックエンドを構成する」セクションで、サンドボックス アクセス トークンを指定しました。これを本番アクセス トークンに置き換えます。
If you want to test the application in a production environment (squareup.com), you must use an actual payment card. Note that Square actually charges payment cards in production. Therefore, if you must test in production, charge minimum amounts.本番環境でアプリケーションをテストする場合 ( squareup.com)、実際の支払いカードを使用する必要があります。Square は実際に本番環境で支払いカードに課金することに注意してください。したがって、本番環境でテストする必要がある場合は、最小限の料金を請求してください。
スクエアのサブスクリプションのリストには、カスタマーIDが表示されるが、これをアプリ内のユーザー名と紐づけする方法を考えてみた。簡単そうだが、意外にはまってしまった。結果的には、以下のようにすることで解決できたが、ここに至るまでは、試行錯誤が必要だった。
<View側>
usertmpl3=list(map(lambda ob:{'customerid':ob.customerid,'username':ob.username},User.objects.all()) )
srclst=list(filter( lambda ob: ob.get('canceled_date',"")=="",list(result.body['subscriptions'])))
subscriptions=list(map( lambda ob : {'subsc':ob , 'cid':next( filter(lambda ob2: ob2['customerid'].strip() == ob['customer_id'].strip() ,usertmpl3),{'customerid':"",'username':"削除"})['username'] } ,srclst ))
注意点:usrtmpl3、srclstいずれも最後にlistを適用してある。こうしないと、うまく動作しない。(filter()関数の戻り値はgeneratorオブジェクトという記述がネット内にある。)
まわりくどい式になってしまった。もっとスマートな方法がありそうだが。値が存在しないときに「削除」という表示にしたかったので、nextを使ってみた。
https://president.jp/articles/-/61331?page=4
高血圧の基準は年々きびしくなっている。なぜだろう?と思うことがあったが。何が本当なのか、よくわからない。高すぎても、低すぎてもよくないということは、確かかもしれない。
10万kmはもつといわれているイグニッションコイルだが、なぜか、14万kmで2回目の交換。今回は寿命がくるのがはやい。プラグもまだなんとかなるはずなんだけれど。とりあえず、交換したら快調になった。あまりケチらず、少し高いイグニッションコイルを購入した。
スクエアを利用してみる。
pip install squareup
APIの説明が膨大。和訳して読みこなす。
Ajaxで、サーバを動作させて(Viewに記述)なんとかできそうだ。
様々なIDが必要でかなり手間はかかるし、いろいろ工夫も必要なようだ。