Hosting Company Doesn't Support WebApp2 - What Can I Use In Its Place?

不羁的心 提交于 2020-01-07 03:27:17

问题


I'm trying to run a python file on a subdomain that I created. According to HostGator, python files are supported, but not the webapp2 framework, which I used throughout the file:

#!/usr/bin/env python
#
# Copyright 2007 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.

# See the License for the specific language governing permissions and
# limitations under the License.
#

import webapp2
import cgi

def Build_Page(textarea_content):

form = """
<table>
    <tr>
    <td>
    <label>{0}</label>
    </td>
    <td>
    <label>Username: <input type="text" name="username"/></label>
    </td>
    </tr>

    <tr>
    <td>
    <label>{1}</label>
    </td>
    <td>
    <label>Password: <input type="text" name="password"/></label>
    </td></tr>

    <tr>
    <td> 
    <label>{2}</label>
    </td>
    <td>
    <label>Verify Password: <input type="text" name="verify_password"/>
    </label>
    </td>
    </tr>

    <tr>
    <td>
    <label>{3}</label>
    </td>
    <td>
    <label>Email (optional): <input type="text" name="email"/></label>
    </td>
    </tr>

</table>
"""
submit = "<input type = 'submit'/>"
form2 = ("<form method='post'>" + form + submit + "
</form>").format("Please enter a username",
"Please enter a password", "Passwords must match","Please enter a valid
email")

header = "<h1>User Signup</h1>" 

return header + form2

class MainHandler(webapp2.RequestHandler):
    def get(self):
        content = Build_Page("")
        self.response.write(content)

    def post(self):
    # look inside the request to figure out what the user typed
        username = self.request.get("username")
        password = self.request.get("password")
        verify_password = self.request.get("verify_password")
        email = self.request.get("email")
    # if the user typed nothing at all, redirect
        if (not username) or (username.strip() == ""):
            error = "Please enter a username."
            self.response.write(error)
            self.redirect("/?error=" + cgi.escape(error, quote=True))

        if (not password) or (username.strip() == ""):
            error = "Please enter a username."
            self.response.write(error)
            self.redirect("/?error=" + cgi.escape(error, quote=True))

        """if (not username) or (username.strip() == ""):
            error = "Please enter a username."
            self.response.write(error)
            self.redirect("/?error=" + cgi.escape(error, quote=True))

        if (not username) or (username.strip() == ""):
            error = "Please enter a username."
            self.response.write(error)
            self.redirect("/?error=" + cgi.escape(error,
            quote=True))"""

    #self.write.form2    
    #message = self.request.get("message") # hello</textarea>hello
    #rotation = int(self.request.get("rotation")) # 0 
    #encrypted_message = caesar.encrypt(message, rotation) 
    #hello</textarea>hello
    #escaped_message = cgi.escape(encrypted_message) 
    # hello&lt;/textarea&gt;hello
    #content = build_page(escaped_message)
    #self.response.write(content)

    #original_form = form.format("","","","","","")
    #page footer

    #class TestHandler(webapp2.RequestHandler):
    #    """ Handles requests coming in to '/add'
    #        e.g. www.user-signup.com/add
    #    """
    #    def get(self):

app = webapp2.WSGIApplication([
    ('/', MainHandler),
    #('/', TestHandler)
], debug=True)

As far as I understand, webapp / webapp2 is what makes the Handlers + the functions inside of them work. Getting the username input in the "Username" label, for example, is made possible with webapp2.

Since HostGator doesn't support webapp2, what else can I use in its place? The technical support person at HostGator suggested I use PIP or maybe PyPI:

http://webpy.org/install

https://pypi.python.org/pypi

But after I install one of these packages and copy its folder to the directory for my subdomain, how do I know what command to use at the top of the file. Do I just say

import pip

and class MainHandler(pip.RequestHandler):,

class TestHandler(pip.RequestHandler):, etc?

Here's where I'm trying to host:

usersignup.thehamburgercollection.com

Link to previous question

UPDATE: I wasn't able to host this app on appspot.com (google cloud). I just could not figure out how to upload my files to the correct directory - the instructions weren't clear / youtube tutorials were out of date. I'll post a solution if / when I figure out how.


回答1:


Your question is really confusing, PIP is just a package manager, PIP is to python what NPM is to NodeJs. Deploying apps to Google Cloud is straightforward. First Install Google Cloud SDk and navigate to your application's root directory and run the command.

gcloud deploy


来源:https://stackoverflow.com/questions/42017007/hosting-company-doesnt-support-webapp2-what-can-i-use-in-its-place

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!