我想创建随机网址。我的意思是,首先请将网址设为myapp.appspot.com/868DF7.html 它将连接到app.yaml中的test.py.当用户打开此URL时,test.py将生成新的URL。我会在数据存储区保存下一个url。并且无法访问上一个网址。我猜这个词是"一次性"。
可以像这样创建动态网址吗?
我当前的test.py:它从数据存储中获取前一个字符串并创建下一个网址并保存。
import webapp2
from google.appengine.ext import db
from google.appengine.api import users
import jinja2
import os
import uuid
class Saved(db.Model):
urls=db.StringProperty()
date = db.DateTimeProperty(auto_now_add=True)
def _rKey(r_name=None):
return db.Key.from_path("r", r_name or 'default_r')
class MainPage(webapp2.RequestHandler):
def get(self):
r_name="none"
saveds_query = Saved.all().ancestor(
_rKey(r_name)).order('-date')
urls = saveds_query.fetch(10)
q=db.Query(Saved).order('-date')
print "previous url:", q[0].urls
print "<br>"
save = Saved(parent=_rKey(r_name))
save.urls=str(uuid.uuid4().get_hex().upper()[0:6])+".html"
print "next url:",save.urls
save.put()
APP = webapp2.WSGIApplication([
('/give/', MainPage),
], debug=True)
和app.yaml
handlers:
- url: /favicon\.ico
static_files: favicon.ico
upload: favicon\.ico
- url: /.*
script: helloworld.APP
libraries:
- name: webapp2
version: "2.5.2"
- name: jinja2
version: "2.6"
其余的文件几乎与google的留言板示例相同。 https://github.com/GoogleCloudPlatform/appengine-guestbook-python/blob/master/guestbook.py
答案 0 :(得分:1)
您应该定义一个在通配符或正则表达式上处于活动状态的处理程序,该处理程序与您为随机字符串选择的格式相匹配。
当您在那里收到请求时,让处理程序检查所使用的特定路由,并对其进行验证(正如您所记录的那样)数据存储区,Cloud SQL,您自己的Redis服务器等,它们存储资源或引用应该可以从该特殊路线访问的资源。
然后您可以让处理程序为资源提供服务,或者在那时,如果您需要/需要,以某种方式验证身份验证(希望他们的Google帐户的OAuth)
答案 1 :(得分:1)
app.yaml列出服务器用于匹配处理程序的“规则”。这些规则可能使用通配符和正则表达式。例如,您可以添加以下规则:
- url: /movie/.*
服务器会解释此规则,以将所有匹配的URL发送到您指定的文件或脚本。例如,以下网址符合此规则:
myApp.appspot.com/movie/1234
myApp.appspot.com/movie/1234.mp4
您可以在匹配规则中根据需要使用正则表达式。