You don't need "action=..." unless you want to direct your user to another page.
There are two ways to send values to another web page: GET and POST. If you were to use "method=get," you would see the variables as part of the URL once you hit submit (everything after the question mark):
usr=admin&pwd=admin&submit=Submit&action=checklogin
If you use "method=post," you will still have access to those variables, but they will not be visible in the URL.
There are a couple of advantages to using POST. First of all, the variables are not visible in the URL, so your URL is less "messy." If you have values you would rather not let your users see, this is another advantage. Third, you are not limited in the number of variables or the length of the values. With GET, you are limited by the user's browser limit on URL length. That can get messy if you have a lot of variables.
One advantage to the GET method is access to QUERY_STRING. However, that is a very minor advantage in my book, and I recommend using POST whenever possible.
If you want to use POST, you must specify "method=post," because GET is the default. If you do not specify a method, GET will be used.
So, in summation: You don't need "action=...", but you do need "method=post." Your code will look like this:
print("<form method=post>")
Hope that helps!